使用.htaccess和mod_rewrite重写URL

时间:2011-06-19 08:25:52

标签: .htaccess mod-rewrite

我在.htaccess中使用此代码来重写我的网址,如下所示:

www.example.com/subcategory.php?subcat=my-test

www.example.com/my-test

我使用的

.htaccess代码:

RewriteEngine on
RewriteCond $1 !^(subcategory\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ subcategory.php?subcat=$1 [L,QSA]

我的问题是每当我访问不属于我的subcategory.php文件的网址时,如contactus和aboutus,.htaccess文件会以某种方式将我带到subategory.php文件,这不是我想要的。我希望我的联系人可以通过contactus.php和aboutus与aboutus.php来处理。

我知道我的.htaccess文件有问题,但由于我不熟悉.htaccess编码,我无法自行修复。

任何建议都将不胜感激。

非常感谢!

1 个答案:

答案 0 :(得分:2)

您正在重写对subcategory.php的所有请求。 .htaccess无法判断/xxx是子类别还是某个不同的页面,因此您可以将其重定向到其他不同的脚本。

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]

使用此代码段代替您的代码片段并将所有“路由”逻辑移至PHP。在PHP中,您可以找出/ xxx是子类别,联系页面,文章还是其他内容,并使用适合该类数据库记录的脚本。

您可以在$_SERVER['REQUEST_URI']找到所请求的网址。