在URL结构中添加尾部斜杠

时间:2015-04-10 01:15:59

标签: .htaccess

请你帮我写正确的.htaccess文件。我有这个:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

所以它从domanname.com/page.php改写为domanname.com/page - 但是如果我输入domanname.com/page/它会转到404页面。我应该改变什么来纠正这个问题。

感谢。

3 个答案:

答案 0 :(得分:0)

在末尾添加尾部斜杠

我收到很多请求,询问如何在最后添加尾部斜杠。忽略第一个代码段并插入以下代码。前四行涉及删除扩展和后续,添加了斜杠和重定向。链接到HTML或PHP文件,如上所示。如果要将代码应用于HTML文件,请不要忘记更改代码。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

更多信息:http://alexcican.com/post/how-to-remove-php-html-htm-extensions-with-htaccess/

答案 1 :(得分:0)

如果要匹配模式,无论是否有斜杠,请添加尾部斜杠,然后添加正则表达式可选运算符?

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)/?$ $1.php [NC,L]

此外,添加了RewriteCond以防止现有目录匹配。

答案 2 :(得分:0)

您可以使用此规则来允许使用可选的尾部斜杠:

RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]