0

伙计们。我正在尝试在我的 .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

4

2 回答 2

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]
于 2013-04-17T05:52:27.857 回答
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]
于 2013-04-17T06:02:43.983 回答