我想在年底斜线/
的网址。
在我的网站上,如果我在结尾处输入斜杠/
的URL,它会给出404错误。
我用下面的代码修改了.htaccess
文件。仍然不工作。
AcceptPathInfo Off
RewriteBase /
RewriteCond %{THE_REQUEST} //
RewriteRule ^ - [L,R=404]
RewriteEngine On
RewriteRule \.php/.+$ [L,NC,R=404]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^blog/([A-Za-z0-9-]+)/?$ inner.php?slug=$1 [NC,L]
RewriteRule ^([^\.]+)$ $1.php [NC,L]
1条答案
按热度按时间vatpfxk51#
这个(最后一个)规则无条件地重写所有 * 剩余 * 的URL(不包含点)以附加
.php
扩展名。但是,如果您在请求的URL上包含一个尾随的斜杠,例如./foo/
,那么它会将请求重写为/foo/.php
(而不是/foo.php
),这将导致404,这肯定是您的问题的原因。您需要从捕获的子模式中排除(强制性的)尾随斜杠。例如:
(* 旁白:* 当在正则表达式字符类中使用时,不需要反斜杠转义文字点,并且
NC
标志在这里是多余的,因为RewriteRule
* 模式 * 无论如何都不区分大小写。但是,在重写请求之前,您应该测试目标
.php
文件是否存在,否则您将得到由/requested-url.php
触发的404,而不是/requested-url
(实际请求的URL)。