0

我遇到了 mod rewrite 在浏览器中正确显示链接的问题

我总是这样在我的页面上放链接

 http://domain.com/contact-us.html

然后在我的 .htaccess 文件中使用它

 Options FollowSymLinks
 RewriteEngine On
 RewriteRule ^([^.]+)\.html$ http://domain.com/index.php?h=$1 [L]

我请求 index.php 页面上的 h 变量来获取和使用 slug “contact-us”

 $h = htmlspecialchars($_REQUEST['h'], ENT_QUOTES, 'UTF-8', false);
 $h = preg_replace('/[^-a-z0-9_]/i','',$h);

这一直运行良好,仍然会在浏览器中显示 domain.com/contact-us.html

我在 1 和 1 上加载了一个站点,而不是看到 domain.com/contact-us.html 我在浏览器中看到 domain.com?h=contact-us。一切正常,只是没有正确显示链接

4

1 回答 1

0

明白了,但对于那些将来可能会有所帮助的人。首先在每次测试时清除缓存

 Options FollowSymLinks
 RewriteEngine On
 RewriteRule ^([^.]+)\.html$ /index.php?h=$1 [L]

不要包含域。在我的情况下,网站在 public_html 文件夹中上升了一级,所以我认为我必须包含域。

添加

RewriteBase /

效果很好,最终代码

 Options FollowSymLinks
 RewriteEngine On
 RewriteBase /
 Options FollowSymLinks
 RewriteEngine On
 RewriteRule ^([^.]+)\.html$ /index.php?h=$1 [L]
于 2012-10-28T00:47:42.690 回答