Mod_Rewrite Htaccess内部重定向无法正常工作

时间:2014-03-03 19:21:38

标签: regex .htaccess

我在过去一小时内尝试了很多东西,没有任何作用。 我有一个名为example.com的网站 我有这段代码:

RewriteEngine On
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+).html$ index.php?p=$1&i=$2 [N]
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?p=$1

当我继续使用example / forums / discussion-f3.html时,它可以运行。 当我尝试/forums/introductions-f2.html时,它会将我重定向到/index.php/?p=forums&i=introductions-f2。此外,http://craftshaft.org/forums/将我发送到http://craftshaft.org/index.php/?p=forums但是当我没有斜线并将其从代码中删除时,它可以正常工作,但我需要在结尾处使用斜杠,因此它看起来像一个文件夹。

基本上,我希望能够查看以下网址:

  • /forums.html(至/index.php?p=forums)
  • forums / thread-name.html(to 的index.php P =论坛&安培; I =线程名)

1 个答案:

答案 0 :(得分:2)

将此代码放在root .htaccess中:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^ - [L]

RewriteRule ^([\w-]+)(\.html)/?$ index.php?p=$1 [L,NC,QSA]

RewriteRule ^([\w-]+)/([\w-]+)\.html$ index.php?p=$1&i=$2 [L,NC,QSA]