2012-04-09 4 views
0

私の.htaccessファイルではなく、PHPの中からmodリライトを処理できるようにしたいのですが、新しい書き換えが必要なカスタムモジュールを持っているときに.htaccessをやり直す必要はありませんファイル。mod_rewriteのルールをPHPのルールに変える

私はWordPressがある彼らの.htaccessないという方法を模倣したい:

RewriteEngine On RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ /index.php/$1 [L,QSA] 

私の現在の.htaccessファイルは、このです:

Options +FollowSymlinks 
RewriteEngine On 

RewriteBase/

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
# MBP Rules 
RewriteRule ^module/([A-Za-z-_]+)/([A-Za-z-_]+)/?$ /index.php?p=module&prefix=$1&module_page=$2 [NC,QSA,L] 
RewriteRule ^module/([A-Za-z-_]+)/([A-Za-z-_]+)/([A-Za-z-_]+)/?$ /index.php?p=module&prefix=$1&module_page=$2&page=$3 [NC,QSA,L] 
RewriteRule ^module/([A-Za-z-_]+)/([A-Za-z-_]+)/([0-9]+)/?$ /index.php?p=module&prefix=$1&module_page=$2&id=$3 [NC,QSA,L] 
RewriteRule ^([A-Za-z-_]+)/?$ /index.php?p=$1 [NC,QSA,L] 
RewriteRule ^([A-Za-z-_]+)/([A-Za-z-_]+)/?$ /index.php?p=$1&s=$2 [NC,QSA,L] 
RewriteRule ^([A-Za-z-_]+)/([A-Za-z-_]+)/([0-9]+)/?$ /index.php?p=$1&s=$2&id=$3 [NC,QSA,L] 

誰もこれを実現するために方法を知っていますか?

+0

PHPが呼び出される前に、Apacheの書き換えが実行/実行されることに留意してください。サブページなどを動的にインクルードする場合を除き、せいぜい本格的なhttp 301/302リダイレクトを行う必要があります。 –

答えて

2

私の方法は、あなたがmodrewriteが行うのと同様の解析と、すべてを行う必要が続いて

RewriteRule ^(.+)$ /index.php?path=$1 [L,QSA] 

RewriteRule ^(.+)$ /index.php/$1 [L,QSA] 

を交換することですが、あなたは$ _GET [上するpreg_matchを使用して、それを自分で行うことができますパス']。私。

if (preg_match('/id/([0-9]*)', $_GET['path'], $matches)) { 
    Do code; 
} 
+0

ああ、このサイトはアンドロイドにやさしいエディタが必要です。私は自分の電話にコードブロックを入れる方法を知らない –

+1

テキストを選択し、ツールバーのコードボタンを押します。私はあなたのためにそれをやるでしょう。あなたのアンドロイドからのすべてのものを書いてうまくいって、+1には –

+0

Androidはボタンを表示しません。私が得るのはテキストエリアです –

1

確かに、.htaccessファイルを最初の例のように見せ、そこからスクリプトを作成してください。

おそらくRouterクラスを書いて、その場所にリクエストをルーティングします。受信したクエリを受信したクエリを/で分割し、URL部分の配列を与え、調整を開始します。 「

関連する問題