简体   繁体   English

可选的尾部斜杠mod_rewrite

[英]Optional trailing slash mod_rewrite

I have a very specific problem. 我有一个非常具体的问题。 The title gives a lot of other questions that have correct answers, however I don't know how to fit this to my own rewrite rules. 标题提供了许多其他具有正确答案的问题,但是我不知道如何使它适合我自己的重写规则。

My .htaccess looks like so: 我的.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]

I want the following 2 URLs to redirect to the same page: 我希望以下2个URL重定向到同一页面:

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

The last rewrite rule is causing a 500 because of the question mark I put, but the logs say nothing. 由于我放置了问号,最后一个重写规则导致500,但是日志什么也没说。 If I change it to this: 如果我将其更改为:

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

The error goes away, but http://timesheep.name/dev/zeroyear/news will return a 404. 错误消失了,但是http://timesheep.name/dev/zeroyear/news将返回404。

What can I do about this? 我该怎么办?

You've got a mix of non-greedy matches (which will eat up optional / 's) and optional / 's all mixed together. 您会混合使用非贪婪的匹配项(这会吃掉可选的/ )和可选的/混合在一起。 Try separating them into distinct matches: 尝试将它们分成不同的匹配项:

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]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM