带htaccess的干净/漂亮网址(特例)

时间:2013-11-16 16:50:57

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

我已经开通了这个网址:

http://domain.com/edit.php?id=123

我一直在寻找,到目前为止,我找到的一切都是教我修改htaccess以便它变成:

http://domain.com/123/

我的问题是,我也有http://domain.com/delete.php?id=123

所以它不会发生冲突,因为它们都会被htaccess重写为相同的(http://domain.com/123/)吗?

我怎样才能这样做

http://domain.com/edit.php?id=123 - > http://domain.com/edit/123 http://domain.com/delete.php?id=123 - > http://domain.com/delete/123 http://domain.com/page.php - > http://domain.com/page

1 个答案:

答案 0 :(得分:1)

  

所以它不会冲突,因为它们都会被htaccess重写为同一个(http://domain.com/123/)吗?

是的,有没有方式判断“123”是否应该路由到“编辑”或“删除”。你必须像你建议的那样添加前缀。通过文档根目录中的htaccess文件中的这些规则:

Options +FollowSymLinks -Multiviews
RewriteEngine On

RewriteRule ^delete/([0-9]+)/? /delete.php?id=$1 [L,QSA]
RewriteRule ^edit/([0-9]+)/? /edit.php?id=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.php -f
RewriteRule ^(.*)$ /$1.php [L]

此外,您可以将这些添加到外部重定向浏览器到更好看的网址

RewriteCond %{THE_REQUEST} \ /+([^.]+)\.php\?id=([0-9]+)
RewriteRule ^ /%1/%2? [L,R=301]

RewriteCond %{THE_REQUEST} \ /+([^.]+)\.php
RewriteRule ^ /%1 [L,R=301]