添加第三个Mod Rewrite - mod_rewrite

时间:2013-04-17 05:46:56

标签: php regex apache mod-rewrite

人。我正试图在我的.htaccess中添加第三个重写条件。问题是,我不知道如何添加另一个。所以,如果有人有一个很好的深入教程,我会很高兴。

无论如何重新开始营业。这是我目前的代码:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

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


RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ users.php?name=$1 [QSA,L]



您可能会看到以上内容删除.php扩展名并将所有不存在的文件发送给用户(IE:website.com/user转到用户的个人资料页面)。

所以现在我需要为论坛添加一个。我希望它重写为“website.com/Group/Category/Thread”

这是否可能,或者我是否需要降低对此的期望?任何帮助将不胜感激。谢谢:D

2 个答案:

答案 0 :(得分:1)

嗯,我记得发过这个答案:)

无论如何,您可以在之前的规则之上创建一个新规则(并用您拥有的任何内容替换/Group/Category/Thread):

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteRule ^forum/?$ /Group/Category/Thread [L,NC]

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

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ users.php?name=$1 [QSA,L]

答案 1 :(得分:0)

您可以插入更多规则。鉴于您希望在最终捕获所有这些规则之前匹配user.php,您应该将它们放在最终规则之前。

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

# match forum, forum/group, forum/group/category and forum/group/category/thread urls
RewriteRule ^forum/?$ forum.php?group=$1&category=$2&thread=$3 [L]
RewriteRule ^forum/([^/]+)/?$ forum.php?group=$1 [L]
RewriteRule ^forum/([^/]+)/([^/]+)/?$ forum.php?group=$1&category=$2 [L]
RewriteRule ^forum/([^/]+)/([^/]+)/([^/]+)/?$ forum.php?group=$1&category=$2&thread=$3 [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ users.php?name=$1 [QSA,L]