如何使用.htaccess规则更改查询字符串网址?

时间:2016-07-23 16:55:00

标签: php apache .htaccess mod-rewrite

我在根目录中有以下文件:

Dev (root)   
   update.php
   zones.php

zones.php 文件使用以下网址显示:

http://localhost/aponit/dev/zones (I hide .php extension using .htaccess rules)

zones.php 文件中,我有一个编辑链接,可以通过查询字符串编辑表单。链接如下:

<a class="btn btn-success btn-xs" href="<?php echo SITE_URL."zones/update?z=$zone_id"?>" >Edit</a>

当我点击此链接时,它显示以下网址:

http://localhost/aponit/dev/zones/update?z=55

但在浏览器中它显示错误消息:

内部服务器错误

因为我的.htaccess规则没有为所需的链接定义适当的规则。

我现在想要的是什么:

我希望网址应该是用户友好的。 E.g

 http://localhost/aponit/dev/zones/update/55

如何使用.htaccess创建此链接?

当前.htaccess规则:

ErrorDocument 404 /not-found.php
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]

1 个答案:

答案 0 :(得分:1)

您可以使用其他规则来处理zones/update/55

Options -MultiViews
ErrorDocument 404 /not-found.php
RewriteEngine on

RewriteRule ^(?:zones/)?update/(\w+)/?$ update.php?z=$1 [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]