1

大多数 RewriteRules 工作正常,但有几个在其中包含相同的单词并且没有转到正确的页面。

这是我的完整 htaccess

Options +FollowSymLinks  
RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d

# Rewrites for main pages
RewriteRule home index.php
RewriteRule about-us about-us.php
RewriteRule business-advice business-advice.php 
RewriteRule associates associates.php
RewriteRule become-an-associate associates-sign-up.php
RewriteRule blog blog.php
RewriteRule contact-us contact-us.php
RewriteRule log-in log-in.php
RewriteRule sign-up sign-up.php

问题存在于两个关联的链接中。当我转到 [MYURL]/associates 时,它工作正常,但如果我转到 [MYURL]/become-an-associate,它会将我带到正确的 URL,但显示来自 [MYURL]/associates 的内容

有人有什么想法吗?谢谢,

4

1 回答 1

3

's的模式RewriteRule是正则表达式,规则全部循环,直到 URI 停止更改。这意味着第一次,当您请求时/become-an-associate,它匹配并被重写为/associates-sign-up.php. 然后,第二次,associates由于"/ associates -sign-up.php" ,具有模式的规则匹配。您需要添加边界检查(例如^$)以及[L]标志:

# Rewrites for main pages
RewriteRule ^home/?$ index.php [L]
RewriteRule ^about-us/?$ about-us.php [L]
RewriteRule ^business-advice/?$ business-advice.php  [L]
RewriteRule ^associates/?$ associates.php [L]
RewriteRule ^become-an-associate/?$ associates-sign-up.php [L]
RewriteRule ^blog/?$ blog.php [L]
RewriteRule ^contact-us/?$ contact-us.php [L]
RewriteRule ^log-in/?$ log-in.php [L]
RewriteRule ^sign-up/?$ sign-up.php [L]
于 2013-07-31T07:35:46.307 回答