我正在访问以下网址:
http://example.com/welcome
我有以下.htaccess
RewriteEngine On
RewriteRule ^(.*)$ /index.php?package=base&page=$1 [L]
我期待回归
package=base
page=welcome
但是却给了我一个" 500内部服务器错误"。
如果我将htaccess更改为
RewriteEngine On
RewriteRule ^we(.*)$ /index.php?package=base&page=$1 [L]
它返回:
package=base
page=lcome
正如所料,如果我将htaccess更改为
RewriteEngine On
RewriteRule ^(.*)me$ /index.php?package=base&page=$1 [L]
它返回:
package=base
page=welco
正如我所期待的那样。
现在的问题是......为什么它不算数整个网址?我在这里缺少什么?我该怎么说"把用户传递的所有东西都放在一个变量"?
上谢谢!
答案 0 :(得分:1)
重写引擎循环,因此在没有某种条件的情况下,正则表达式^(.*)$
匹配index.php
,依此类推。尝试
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?package=base&page=$1 [L]