我决定使用mod_rewrite
让我的网址看起来更好。我创建了非常简单的规则:
RewriteEngine on
RewriteBase /
RewriteRule ^(profile|contact|help|events|account|logout)/?$ index.php?p=$1 [NC]
RewriteRule ^home/?$ index.php [NC]
RewriteRule ^PlaceOrder/([0-9]+)/?$ index.php?p=mos&gc=$1 [NC]
它几乎运作良好,但它没有。因此,例如,[NC]
应该使其不区分大小写。但是,出于某种原因,当我在浏览器中键入例如localhost/Help
时,由于某些奇怪的原因,它会重定向到主页。
另一个问题是最后一条规则。如果我输入localhost/PlaceOrder/1
,它会按预期工作并打开index?p=mos&gc=1
。但在此之后,如果我点击“帐户”按钮,则浏览器会使用以下网址:localhost/PlaceOrder/account
。哪个错了。它应该只使用localhost/account
。为什么要在那里添加子目录?它仅在使用最后一条规则后才会发生。在使用最后一条规则之前,所有链接都可以正常运行。
答案 0 :(得分:1)
由于规则以及index.php脚本中的某些内容,我猜测localhost/Help
不是{not}&n。这些规则没有任何内容可以将Help
重写到主页。
第二个问题是相对vs绝对URL问题。您可能在您的网页中使用了相对链接,并且因为您已经更改了相对网址基础(/PlaceOrder/
所有相关链接都会包含在其中。您需要更改所有相关网址。指向绝对网址的链接(它们以/
开头)或将其添加到您网页的标题中:
<base href="/" />