网址重写规则不起作用.htaccess

时间:2015-04-27 10:07:15

标签: php apache .htaccess mod-rewrite url-rewriting

我正在尝试使用.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>

我仍在获取原始网址。任何人都可以指出为什么重写规则不起作用?我尝试了很多没有成功。在此先感谢。

1 个答案:

答案 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]

示例:

  1. http://example.com/specific_hall.php?hall_name=Shalimar+Hall&hall_id=1 将重定向到http://example.com/1-Shalimar+Hall.php(不需要 更改文件中的链接。)
  2. http://example.com/1-Shalimar+Hall.php将在内部重写为(= 显示相同的内容) http://example.com/specific_hall.php?hall_name=Shalimar+Hall&hall_id=1