0

/blog/2012/11/30/this-post のようなブログ記事の URL を /blog/post.php?id=this-post にリダイレクトする .htaccess ファイルがあります。その下にある 2 番目のルールを適用するまでは正常に動作しますが、これも一致します。このルールは、/this/is/a/pageid のようなパス形式の URL を受け取り、/page.php?id=pageid にリダイレクトするように設定されています。パスの長さは気にせず、パスの最後のディレクトリを ID として使用するだけです。残念ながら、このルールはすべてに一致するため、最初の一致後にリダイレクトを停止する方法がわかりません。これが私の.htacessです

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^blog/([0-9]+)/([0-9]+)/([0-9]+)/([A-Za-z0-9-]+)$ /blog/post.php?id=$4 [L]
RewriteRule ([^/]+)/?$ /page.php?id=$1 [L]

助けてくれてありがとう。

4

1 に答える 1

0

初めてリダイレクトした後にオプションのクエリ パラメータを追加し、それをクエリ文字列の単純な書き換え条件と組み合わせて、そのパラメータが存在するかどうかを確認できます。これを試してください。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^blog/([0-9]+)/([0-9]+)/([0-9]+)/([A-Za-z0-9-]+)$ /blog/post.php?id=$4 [L]

RewriteCond %{QUERY_STRING} !^(.*&)?r=0(&.*)?$
RewriteRule ([^/]+)/?$ /page.php?id=$1&r=0 [L]
于 2012-11-30T16:17:58.993 に答える