我对htaccess有疑问。我正在尝试执行以下操作:
blabla.com/lala
和blabla.com/lulu
lala和lulu是我的变量(在两个网站上显示不同的内容,但它是相同的文件(example.php)。
所以我在htaccess中所做的是:
RewriteRule ^([^&]+)$ example.php?type=$1
但是当回显GET [type]时,我只得到文件名(“example.php”)。但是我想让它显示“lala”或“lulu”。
当我这样做时它会起作用:
RewriteRule ^blablabla/([^&]+)$ example.php?type=$1
但我只是不需要“blablabla”:D
提前致谢:)
答案 0 :(得分:3)
但是当回显GET [type]时,我只得到文件名(“example.php”)。但是我想让它显示“lala”或“lulu”。
这是因为重写规则循环,直到进入重写引擎的URI与引擎发出的URI相同。您的正则表达式^([^&]+)$
与您的规则(example.php
)的目标相匹配。因此,您需要条件来检查URI是否已经example.php
,或者检查请求是否指向不存在的文件或目录:
RerwiteCond %{REQUEST_URI} !/example\.php
RewriteRule ^(.+)$ example.php?type=$1 [L,QSA]
或
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ example.php?type=$1 [L,QSA]
答案 1 :(得分:1)
试试这个?
RewriteRule ^([A-Za-z0-9-]+)/?$ example.php?type=$1 [NC,L]
答案 2 :(得分:0)
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]
QSA
用于查询字符串重写