【问题标题】:Wrong redirect with .htaccess使用 .htaccess 重定向错误
【发布时间】:2017-01-23 16:11:04
【问题描述】:

我想使用 .htaccess 配置重定向。这部分工作。

当我打开页面时: www.example.com/workflow -> 一切正常

当我打开页面时: example.com/workflow -> 重定向到 www.example.com/workflow.php 但它应该重定向到 www.example.com/workflow(因为重复的内容)

我的配置错误在哪里?有人可以帮帮我吗?

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

RewriteCond %{THE_REQUEST} index\.php [NC]
RewriteRule ^index\.php$ http://www.example.com/ [NC,R=301]


Redirect /facebook https://www.facebook.com/example/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^workflow/$ workflow.php [L]

【问题讨论】:

  • 在 www 重定向之后,[L] 标志会导致 mod_rewrite 停止处理规则集。
  • 所以你要实现 URL 规范化?只是想确保我正确理解了您的问题。
  • 规则应该可以正常工作。也许还有其他规则,或者您的顺序与问题中显示的不同。
  • 我希望唯一正确的 URL 是:www.example.com/workflow。用户插入哪个 URL 无关紧要。 example.com/workflow 或 www.example.com/workflow 我已经进一步 RewriteRules 之类的工作流,但他们有同样的问题
  • 尝试清除浏览器缓存。你的规则对我来说很好。

标签: php apache .htaccess redirect url-rewriting


【解决方案1】:

改变这一行:

RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

到这里:

RewriteRule ^(.*)$ http://www.example.com/$1 [NC,R=301]

应该可以解决的

【讨论】:

  • 不,这会导致规则的外部循环。您删除了 L。
猜你喜欢
  • 2011-07-23
  • 2015-03-24
  • 2010-11-18
  • 1970-01-01
  • 2014-04-23
  • 2012-03-04
  • 2020-02-15
  • 1970-01-01
相关资源
最近更新 更多