0

私は非常に特定の問題を抱えています。タイトルには正解の質問がたくさんありますが、これを自分の書き換えルールに合わせる方法がわかりません。

私の.htaccessは次のようになります。

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

RewriteRule ^[^/]*/?$ index.php [NC,L]
RewriteCond %{REQUEST_URI} !(^/dev/zeroyear/$)
RewriteRule ^dev/zeroyear/([^/]+)/?([^/]*)/?([^/]*)/?([^/]*)/?$ /dev/zeroyear/index.php?var1=$1&var2=$2&var3=$3&var4=$4 [L,QSA]

次の2つのURLを同じページにリダイレクトしたい:

http://timesheep.name/dev/zeroyear/news
http://timesheep.name/dev/zeroyear/news/

最後の書き換えルールは、私が付けた疑問符のために500を引き起こしていますが、ログには何も書かれていません。これに変更すると:

RewriteRule ^dev/zeroyear/([^/]+)/([^/]*)/?([^/]*)/?([^/]*)/?$ /dev/zeroyear/index.php?var1=$1&var2=$2&var3=$3&var4=$4 [L,QSA]

エラーはなくなりますが、http://timesheep.name/dev/zeroyear/newsは404を返します。

これについて私は何ができますか?

4

1 に答える 1

1

欲張りでないマッチ(オプションのを食い尽くす/)とオプションのマッチが/すべて混ざり合っています。それらを個別の一致に分けてみてください。

RewriteCond %{REQUEST_URI} !(^/dev/zeroyear/$)
RewriteRule ^dev/zeroyear/([^/]+)/([^/]+)/([^/]+)/([^/]+?)/?$ /dev/zeroyear/index.php?var1=$1&var2=$2&var3=$3&var4=$4 [L,QSA]

RewriteCond %{REQUEST_URI} !(^/dev/zeroyear/$)
RewriteRule ^dev/zeroyear/([^/]+)/([^/]+)/([^/]+?)/?$ /dev/zeroyear/index.php?var1=$1&var2=$2&var3=$3 [L,QSA]

RewriteCond %{REQUEST_URI} !(^/dev/zeroyear/$)
RewriteRule ^dev/zeroyear/([^/]+)/([^/]+?)/?$ /dev/zeroyear/index.php?var1=$1&var2=$2 [L,QSA]

RewriteCond %{REQUEST_URI} !(^/dev/zeroyear/$)
RewriteRule ^dev/zeroyear/([^/]+?)/?$ /dev/zeroyear/index.php?var1=$1 [L,QSA]
于 2012-12-10T21:09:32.670 に答える