1

好的,我的 .htaccess 位于http://example.com/forums/

RewriteEngine On 
RewriteRule ^threads/([^/]+)/([^/]+)$ forums-threads.php?code=$1&pn=$2 [QSA]
RewriteRule ^threads/([^/]+)$ forums-threads.php?code=$1 [QSA]
RewriteRule ^new-thread/([^/]+)$ forums-new-thread.php?code=$1 [QSA]
RewriteRule ^new-post/([^/]+)$ forums-new-post.php?code=$1 [QSA]
RewriteRule ^([^/]+)/([^/]+)$ index.php?code=$1&pn=$2 [QSA]
RewriteRule ^([^/]+)$ index.php?code=$1 [QSA]

现在的问题是,当我像这个例子一样转到一个新的线程 URL 时,它会转到索引页面$_GET,并且输出的变量是

Array ( [code] => eUjJP-Announcements [pn] => eUjJP-Announcements )

我想知道如何解决这个问题,以及.htaccess上面的代码中是否还有其他问题需要纠正。

4

1 回答 1

0

它正在发生,因为下面的后续规则仍在执行,因为您没有任何其他条件来阻止它。

用这个替换你的代码:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /forums/

RewriteRule \.php$ - [L]

RewriteRule ^threads/([^/]+)/([^/]+)$ forums-threads.php?code=$1&pn=$2 [QSA,L]
RewriteRule ^threads/([^/]+)$ forums-threads.php?code=$1 [QSA,L]
RewriteRule ^new-thread/([^/]+)$ forums-new-thread.php?code=$1 [QSA,L]
RewriteRule ^new-post/([^/]+)$ forums-new-post.php?code=$1 [QSA,L]
RewriteRule ^([^/]+)/([^/]+)$ index.php?code=$1&pn=$2 [QSA,L]
RewriteRule ^([^/]+)$ index.php?code=$1 [QSA,L]
于 2013-07-11T19:37:54.240 回答