我已经为我的网站创建了一堆 RewriteRules,并且在我的本地设置中没有遇到任何问题。这是我的 .htaccess 的片段:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule ^news/?$ news.php [L]
在本地,当我访问 127.0.0.1/news 时,它会正确重定向到 news.php 并屏蔽 URL。我刚刚更新了远程服务器上的 .htaccess 文件,并在尝试访问上面的示例时收到此错误:
在此服务器上找不到请求的 URL /mnt/target02/123456/123456/www.mywebsite.com/web/content/news.php。
我尝试将规则更改为:
RewriteRule ^news/?$ http://www.mywebsite.com/news.php [L]
并且页面加载正确。然而,地址栏显示的是news.php,而不是新闻。我是否遗漏了什么,或者我是否坚持使用丑陋(且不太安全)的地址?
谢谢!
如果您像我一样,您会尝试避免在替换 URL(新目的地)中添加前导斜杠,以便您的相同内容.htaccess
文件可以与您的测试和生产服务器一起使用。我遇到了与您相同的问题,所需要做的就是设置:
RewriteBase /
这告诉 mod_rewrite 将替换 URL 基于 Web 根而不是文件根。另一个提示,如果您需要重定向到目的地的顶层,请使用./
而不是仅仅/
。我的测试服务器有一个端口(8080)并且不在根目录(因此它有一个非空RewriteBase
of /site1/
),并且网络上的大多数重写规则示例都没有考虑这种情况。如果您的替换从未以斜杠开头,则可以使用相同的.htaccess
文件在您的测试服务器和实时服务器上,您可能需要更改的只是值RewriteBase
,而不是更新每一条规则。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)