url重写不工作.htaccess

时间:2014-04-15 04:50:36

标签: php .htaccess mod-rewrite

我正在尝试使用htaccess重写网址,我尝试了另外一个问题的答案,但似乎没有任何工作,我仍然得到原始网址。 这就是我所拥有的:

http://localhost/inbox.php?pg=2

我想要

http://localhost/inbox/2 

我已经有了一条规则,可以删除.htaccess中的.php扩展名,如下所示,只是添加了最后一行

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [QSA,L]
RewriteRule /(.*)$ /inbox.php?pg=$1//added this

3 个答案:

答案 0 :(得分:0)

您的问题是最后一行之前的行被定义为最后一行,因此您的规则必须高于RewriteConditions。更好地使用此规则集:

RewriteRule ^/?inbox/(\d+)$ /inbox.php?pg=$1 [QSD,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [QSA,L]

我添加了你错过的你需要的前缀,并且在这些数字跟随之后(至少有一个)进行了修改。

答案 1 :(得分:0)

Apache重写引擎主要用于将动态网址(例如 http://localhost/inbox.php?pg=2 )转换为静态且用户友好的网址 http://localhost/inbox/2

RewriteEngine on
RewriteRule ^inbox/([^/.]+)/?$ /inbox.php?pg=$1 [L]

说明:这是如何工作的

  

号召性用语: RewriteRule

     

模式: ^ inbox /([^/.]+)/?$

     

重写: /inbox.php?pg=$1

     

命令标志: [L]

答案 2 :(得分:0)

简单地说,

RewriteEngine on
RewriteRule ^inbox/([0-9]+)/?$ inbox.php?pg=$1

来源:10 Simple examples to rewrite using htaccess