我有一个类似此链接的页面: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吗?
答案 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/]+)$