使用.htaccess和mod_rewrite重写URL

使用.htaccess和mod_rewrite重写URL,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我在.htaccess中使用此代码重写我的URL,如下所示: www.example.com/subcategory.php?subcat=my test 到 www.example.com/my test .htaccess我使用的代码: 重新启动引擎 RewriteCond$1^(子类别\.php | resources | robots\.txt) RewriteCond%{REQUEST\u FILENAME}-f RewriteCond%{REQUEST\u FILENAME

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

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


www.example.com/my test

.htaccess我使用的代码:

重新启动引擎

RewriteCond$1^(子类别\.php | resources | robots\.txt)

RewriteCond%{REQUEST\u FILENAME}-f

RewriteCond%{REQUEST\u FILENAME}-d

RewriteRule^(.*)$subcategory.php?subcat=$1[L,QSA]

我的问题是,每当我访问与我的subcategory.php文件(如contactus和aboutus)无关的url时,.htaccess文件就会以某种方式将我置于subcategory.php文件中,这不是我想要的。我希望我的contactus由contactus.php处理,aboutus与aboutus.php一起处理

我知道我的.htaccess文件有问题,但我自己无法修复它,因为我不太熟悉.htaccess编码

如有任何建议,将不胜感激


多谢各位

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

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]
使用此代码段而不是您的代码段,并将所有“路由”逻辑移到PHP。在PHP中,您可以找出/xxx是否是子类别、联系人页面、文章或其他内容,并使用适合这种数据库记录的脚本

您将在
$\u服务器['REQUEST\u URI']
中找到请求的URL