Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 可选的尾部斜杠mod_重写_Apache_.htaccess_Mod Rewrite - Fatal编程技术网

Apache 可选的尾部斜杠mod_重写

Apache 可选的尾部斜杠mod_重写,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我有一个非常具体的问题。 标题给出了许多其他问题的正确答案,但我不知道如何将其与我自己的重写规则相适应 我的.htaccess看起来是这样的: RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^[^/]*/?$ index.php [NC,L] RewriteCond %{REQUEST_URI} !(^/dev/zeroyear/$) RewriteRule ^dev/ze

我有一个非常具体的问题。 标题给出了许多其他问题的正确答案,但我不知道如何将其与我自己的重写规则相适应

我的.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]
我希望将以下两个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]
错误消失,但将返回404


对此,我能做些什么?

您混合了非贪婪匹配(这将吃掉可选的
/
),可选的
/
都混合在一起了。尝试将它们分离为不同的匹配项:

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]

我想我错过了什么。。。对我来说,原来的规则和你的变化是一样的。你做了什么改变?@Wige是的,我有点打字错误,现在已经更正了。