【问题标题】:htaccess redirect www to non-www still puts .php extension in urihtaccess 将 www 重定向到非 www 仍然将 .php 扩展名放在 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怎么办?
  • 如果您之前使用过301,请清除浏览器缓存。它缓存它。使用 302 进行测试,直到您的重写工作,然后您可以将其设置为永久。

标签: php .htaccess url-redirection


【解决方案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]

【讨论】:

    猜你喜欢
    • 2022-10-17
    • 2012-11-16
    • 2010-12-13
    • 1970-01-01
    • 2012-08-16
    • 2017-05-03
    • 2012-10-19
    相关资源
    最近更新 更多