htaccess 无法匹配整个 URL

htaccess cannot match the whole URL

我正在访问以下内容URL:

http://example.com/welcome

我有以下 .htaccess

RewriteEngine On
RewriteRule ^(.*)$ /index.php?package=base&page= [L]

我期待 return

package=base
page=welcome

而是给我一个“500 内部服务器错误”。

如果我将 htaccess 更改为

RewriteEngine On
RewriteRule ^we(.*)$ /index.php?package=base&page= [L]

它returns:

package=base
page=lcome

正如预期的那样,如果我将 htaccess 更改为

RewriteEngine On
RewriteRule ^(.*)me$ /index.php?package=base&page= [L]

它returns:

package=base
page=welco

正如我所料。

现在的问题是...为什么它不计算整个 URL?我在这里缺少什么?我怎么说"take everything the user passes and put it on a variable"?

谢谢!

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

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