我正在尝试使用.htaccess文件重写URL,但它无效。首先,我在我的本地主机上尝试了很多,然后在我的Live服务器上尝试但是它没有工作..我仍然得到原始网址。这就是我所拥有的..
原始网址: -
http://test.1click.com.pk/specific_hall.php?hall_name=Shalimar+Hall&hall_id=1
我想要: -
http://test.1click.com.pk/Shalimar+Hall.php
我的.htaccess文件: -
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)\.php$ /specific_hall.php?hall_name=$1&hall_id=1 [L]
</IfModule>
我仍在获取原始网址。任何人都可以指出为什么重写规则不起作用?我尝试了很多没有成功。在此先感谢。
答案 0 :(得分:1)
您需要在新的网址格式中加入hall_id
param才能重新格式化。否则, mod_rewrite 无法知道它。
您可以将此代码放在root htaccess
中RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} \s/specific_hall\.php\?hall_name=([^\s&]+)&hall_id=(\d+)\s [NC]
RewriteRule ^ %2-%1.php? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(\d+)-([^/]+)\.php$ specific_hall.php?hall_name=$2&hall_id=$1 [L]
示例:
http://example.com/specific_hall.php?hall_name=Shalimar+Hall&hall_id=1
将重定向到http://example.com/1-Shalimar+Hall.php
(不需要
更改文件中的链接。)http://example.com/1-Shalimar+Hall.php
将在内部重写为(=
显示相同的内容)
http://example.com/specific_hall.php?hall_name=Shalimar+Hall&hall_id=1