1

我希望我的网址看起来像这样:“http://www.example.com/start”,而不是这样:“http://www.example.com/index.php/start”。这适用于我的 .htaccess 中的这段代码:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?/$1

在一个页面上,我必须使用 GET-Parameters,网址应该如下所示:“http://www.example.com/artists/picasso”,而不是这样:“http://www.example.com /index.php/artists?artist=picasso" 也可以使用以下代码:

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

现在,这个解决方案的问题是,所有其他 url 现在必须以斜杠结尾。所以它必须看起来像这样:“http://www.example.com/start/”,
而不是这样:“http://www.example.com/start”

谢谢你的帮助 !

4

1 回答 1

1

尝试将您的规则更改为:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !artists/
RewriteRule ^(.*?)/?$ /index.php?/$1
RewriteRule ^artists/(.*)$ /index.php/artists?artist=$1 [L]

主要是,您/$的模式末尾有 a:RewriteRule ^(.*)/$ /index.php?/$1这意味着它必须以斜杠结尾才能匹配模式。将其更改为(.*?)/?$使其可选。

于 2012-12-03T11:50:36.000 回答