如何通过.htaccess实现移动端页面URL重写:slug转带参数路径
问题说明
我的文件夹结构如下:
Gadgets92 - mobiles - index.php - product.php - .htaccess
我在Windows虚拟主机上把Gadgets92文件夹绑定成了gadgets92.test域名。
在mobiles/index.php里,我把商品页面的链接设为http://gadgets92.test/mobiles/slug,想通过.htaccess把这个URL转成http://gadgets92.test/mobiles/product.php?slug=slug。
我试过下面的规则,但没起作用:
RewriteEngine On # 将"/mobiles/slug"重写为"/mobiles/product.php?slug=$1" RewriteRule ^mobiles/([^/]+)$ /mobiles/product.php?slug=$1 [L]
解决方法
你的.htaccess放在mobiles目录下,规则里的^mobiles/([^/]+)$匹配不到请求——因为当前目录是mobiles,规则匹配的是相对于这个目录的路径,不是整个域名下的路径。
修改后的.htaccess规则如下:
RewriteEngine On # 匹配当前目录下的slug路径,转发到product.php RewriteRule ^([^/]+)$ product.php?slug=$1 [L]
额外提示
如果不想让规则影响真实存在的文件或目录(比如index.php),可以加上条件过滤:
RewriteEngine On # 跳过真实存在的文件和目录 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([^/]+)$ product.php?slug=$1 [L]
内容的提问来源于stack exchange,提问作者Maaz Tajammul
相关产品推荐
相关产品推荐

