我在强制删除URL中的.php文件扩展名时遇到一点问题。
如果用户:我可以成功删除.php文件扩展名:
#Remove PHP if original request is /foo/bar.php
RewriteCond %{THE_REQUEST} "^[^ ]* .*?\.php[? ].*$"
RewriteRule ^(.*)\.php(\?.*)?$ $1$2 [R=301,L]我的目标是让它也删除扩展,如果:
# Remove PHP if original request is /foo.php/bar我这样问是因为现在用户可以转到URL并输入http://www.site.com/contact.php/about,它将呈现我的about页面。我的目标是强制删除.php并呈现:http://www.site.com/contact/about
我希望把上面的代码加到上面,但是我想不出来。
提亚
发布于 2012-09-11 22:43:18
下面的.htaccess页面给了我请求的参数,你可以得到“”
AddDefaultCharset utf-8
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .* - [L]
DirectoryIndex index.php
RewriteRule ^([a-zA-Z0-9_-]{3,20})/([^/]+)/([^/]+)?$ index\.php?page=$1&s=$2&o=$3 [L]
RewriteRule ^([a-zA-Z0-9_-]{3,20})/([^/]+)?$ index\.php?page=$1&s=$2 [L]
RewriteRule ^([a-zA-Z0-9_-]{3,20})/?$ index\.php?page=$1 [L]
RewriteRule ^([a-zA-Z0-9_-]{3,20})?$ index\.php?page=$1 [L]
ErrorDocument 404 /404获取"page“参数,然后像这样调用它
include('inc/'.$_REQUEST['page'].'.php');记住从你的链接中删除.php ext
发布于 2012-09-11 22:58:57
看起来你得到了删除部分,但是你遗漏了内部重写部分。您尝试从URL中删除php,并将客户端重定向到没有它的URL。但您的条件不匹配请求,请将其更改为:
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ .*\.php.*$
RewriteRule ^(.*)\.php(.*)?$ /$1$2 [R=301,L]然后你需要在内部重写它(不要重定向浏览器)。因此,在相同的htaccess文件中,添加:
RewriteCond %{REQUEST_URI} ^/([^/]+)(.*)$
RewriteCond %{DOCUMENT_ROOT}/%1.php -f
RewriteRule ^([^/]+)(.*)$ /$1.php$2 [L]发布于 2012-09-11 22:40:58
将您的两行代码替换为下面这一行:(您的规则中有一个错误,这就是为什么它在中间没有检测到.php,并且您不需要重写条件)
RewriteRule ^(.+)\.php(/.*)?$ /$1$2 [L,R=301]https://stackoverflow.com/questions/12372096
复制相似问题