2011-07-04 12 views
0

こんにちは。私はmod_rewriteはに新しいですし、次の操作を実行することが可能であった場合には思っていた:mod_rewrite条件の基本ヘルプ

RewriteRule ^([^/]*)$ index.php?slug=$1 

このルールは唯一のindex.phpで指していますが、私は別のスクリプトに特定のスラグを指摘し、別のルールをやってみたかった場合つまり、

RewriteRule ^a-new-page$ different.php 

最初のルールでは、入力したものがインデックスを指すと宣言しているため、これは機能しません。

特定のスラッグの新しいルールを強制する方法はありますか?

答えて

1

はい、それは可能である - ちょうど幅広い/一般的なもの(ルールが問題宣言された順番)の前に、このような特定のルールを置く:

RewriteRule ^a-new-page$ different.php 
RewriteRule ^([^/]*)$ index.php?slug=$1 

はまた、広範なルールに注意してください - - 彼らは書き換えループに入るかもしれません(新しいURLが次の繰り返しに書き換えられた後、ルールが正しく書かれていないと無限ループに入り、Apacheは強制終了しなければならず、ユーザに500エラーページが表示されます)。より良いルールは次のようになります。

# specific rule 
RewriteRule ^a-new-page$ different.php [L,QSA] 

# broad rule (will be triggered if requested resource is not a file or directory) 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]*)$ index.php?slug=$1 [L,QSA] 
  • [L]このルールは
  • [QSA]と一致した場合に書換えを中止するようにApacheを伝え、あなたがURLパラメータがある場合は、新しいURL(便利にクエリ文字列を追加するよう指示:例えば、トラッキングデータを、ページパラメータなど)。

便利なリンク:http://httpd.apache.org/docs/current/rewrite/

+0

おかげで、私が後だった答えがある:) –

関連する問題