.htaccess - htaccess删除php扩展,使用. php 扩展停止url访问,并删除尾部斜杠

  显示原文与译文双语对照的内容
142 1

所以,我希望我的URL是 extensionless,所以没有. php 扩展,我也希望没有机会访问带有尾部斜杠的URL 。

如果你尝试使用thens进行访问,下面将删除php扩展和重定向到 extensionless url

我开始写一个规则来阻止你使用/和重定向,但是它不能工作,任何帮助?

#this removes php extension
RewriteCond %{REQUEST_FILENAME}!-f
RewriteRule ^([^.]+)$ $1.php [NC,L] 
# stops you accessing url with.php
RewriteCond %{THE_REQUEST} ^[A-Z]+/([^.? ]+).php
RewriteRule ^([^.]+).php(/.+)?$/$1%{PATH_INFO} [R=301]
# stops you accessing url with/**DOESNT WORK**
RewriteCond %{REQUEST_FILENAME}!-f
RewriteRule ^(.*)/$/$1 [R=301,L]
时间:原作者:0个回答

91 3

你正在向后观察事物:你的第一条规则不是"删除php扩展",它将它添加到不包含它的url 。

我想你想要更多的东西:

RewriteEngine On
RewriteBase/
# Remove. php from any URLs that contain it, using an external 301 redirect
RewriteCond %{QUERY_STRING}!^no-redirect-loop(&|$)
RewriteRule ^(.*).php$ $1 [NS,R=301,L]
# Now add it back internally
RewriteCond %{QUERY_STRING}!^no-redirect-loop(&|$)
RewriteRule ^(.*)$ $1.php?no-redirect-loop [NS,QSA]

我在调试的时候发现,以前的解决方案不在一个。htaccess文件中。我已经编辑了上面的示例代码来使用相当丑陋的kluge来中断重定向循环。kluge的副作用是所有脚本都会看到一个额外的空URL参数,名为 no-redirect-loop

原作者:
...