更改.htaccess以获取新的永久链接

时间:2015-01-27 10:37:21

标签: .htaccess mod-rewrite

我有一个类似此链接的页面:www.mysite/lab/index.php?pagina=blablabla

我使用.htaccess进行了以下设置:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([A-Za-Z0-9]+)$ ./index.php?pagina=$1 [QSA,L]

如果我继续www.mysite/lab/blablabla,我看不到我的网页,但我发现错误page not found

我在www.mysite/lab/和其他3个文件夹中的页面,我可以在.htaccess中使用ELSE IF吗?

3 个答案:

答案 0 :(得分:1)

由于您只需要一个htaccess来处理所有相关文件夹,因此您可以将此代码放入htaccess(必须位于根文件夹中)

RewriteEngine On
RewriteBase /mysite/

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(lab|blog|faq|presentazione|feed|editori)/([^/]+)$ $1/index.php?pagina=$2 [L]

答案 1 :(得分:0)

您的重写规则采用整个请求路径并将其用作$1的参数。您只需捕获最后一个斜杠的内容,而不是整个路径。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule /lab/([A-Za-z0-9]+)$ index.php?pagina=$1 [QSA,L]

您还可以使用RewriteBase指定重写的基础,这实际上允许您跳过/lab/部分。

RewriteEngine On
RewriteBase /lab/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ([A-Za-z0-9]+)$ index.php?pagina=$1 [QSA,L]

答案 2 :(得分:0)

您正在拒绝正则表达式中的/。您需要执行holodoc所说的操作,或者将regexp修改为

^([A-Za-Z0-9/]+)$