重写清理网址的规则

时间:2014-10-05 02:03:43

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

我正在尝试在我的网站上为个人资料编写一个干净的网址。例如,我想要这个网址

/profile?user=MrEasyBB

成为

/MrEasyBB

我当前的htaccess就是这样开始的

Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ profile.php?user=$1 [NC,L]

DirectoryIndex index.php

如果我是正确的,这一切都应该有效。但是,如果他们输入的页面网址是

,则会发生什么
/help

不应该有名为help的用户,该页面应该直接指向help.php。我可以写一条不遵循某种模式的规则吗?我还想知道更改图像,注释等规则:

IE

/image/user/MrEasyBB/1239123871712194124.jpg

而不是

/image/picture.php?user=MrEasyBB&image=1239123871712194124.jpg

如果第一个不能正常工作以及如何进行第二个工作,我对如何添加倍数并遵循该模式需要对重写规则提出任何建议并不积极?

我还下载了htaccess cheatsheet pdf以了解更多信息

2 个答案:

答案 0 :(得分:1)

您需要首先制定一条规则来重写图像以纠正路径,然后您的捕获所有规则将会出现:

DirectoryIndex index.php
Options -MultiViews
RewriteEngine On
RewriteBase /

RewriteRule ^(image)/[^/]+/(.+)$ /$1/$2 [NC,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^user/(.+)$ profile.php?user=$1 [NC,L,QSA]

答案 1 :(得分:0)

类似的东西:

Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?image/user/([a-zA-Z0-9_-]+)/([a-zA-Z0-9.]+)$ /image/picture.php?user=$1&image=$2 [NC,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ profile.php?user=$1 [NC,L]

DirectoryIndex index.php