htaccess 将 www 重定向到非 www 仍然将 .php 扩展名放在 uri 中
Posted
技术标签:
【中文标题】htaccess 将 www 重定向到非 www 仍然将 .php 扩展名放在 uri 中【英文标题】:htaccess redirect www to non-www still puts .php extension in uri 【发布时间】:2016-12-04 04:10:30 【问题描述】:我在这里缺少一些东西: Remove .php extension with .htaccess
我的目标:
将所有内容从 www 重定向到非 www
.htaccess 中的当前代码
RewriteEngine on
Options -Indexes
RewriteBase /
RewriteCond %HTTP_HOST ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME.php -f
RewriteRule ^(.*)$ /$1.php [L]
当前行为:
将所有内容从 www 重定向到非 www,但在 URI 中添加 php 文件扩展名“.php”(php 文件确实存在)
例如:
www.example.com/hello
重定向到
example.com/hello.php
如何避免 URI 中的 php 扩展?
【问题讨论】:
把这个RewriteRule ^(.*)$ /$1.php [L]
改成这个RewriteRule ^(.*)$ /$1 [L]
这种情况总是发生吗?如果你做example.com/hello
怎么办?
Remove .php extension with .htaccess的可能重复
***.com/questions/4026021/…
如果您之前使用过301
,请清除浏览器缓存。它缓存它。使用 302 进行测试,直到您的重写工作,然后您可以将其设置为永久。
【参考方案1】:
我不太确定为什么,它正在使用以下代码。
@Panama-jack 的建议是一个强有力的建议:在处理 htaccess 规则时使用 302 确实是在设置所有内容 301 之前要走的路。
RewriteEngine on
Options -Indexes
Options -Multiviews
RewriteBase /
RewriteCond %HTTP_HOST ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://iPutMyWholeUrlHere.com/$1 [R=301,L]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME.php -f
RewriteRule ^(.*)$ /$1.php [L]
【讨论】:
以上是关于htaccess 将 www 重定向到非 www 仍然将 .php 扩展名放在 uri 中的主要内容,如果未能解决你的问题,请参考以下文章
sh Apache2将www重定向到非www .htaccess
apache_conf .htaccess将www重定向到非www
htaccess 强制 https 并将 www 重定向到非 www,但没有其他子域