htaccess无法匹配整个网址

时间:2015-01-25 20:12:07

标签: apache .htaccess mod-rewrite

我正在访问以下网址:

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

正如我所期待的那样。

现在的问题是......为什么它不算数整个网址?我在这里缺少什么?我该怎么说"把用户传递的所有东西都放在一个变量"?

谢谢!

1 个答案:

答案 0 :(得分:1)

重写引擎循环,因此在没有某种条件的情况下,正则表达式^(.*)$匹配index.php,依此类推。尝试

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?package=base&page=$1 [L]