我希望我的网址看起来像这样:“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]
现在,这个解决方案的问题是,所有其他网址现在都必须以斜杠结束。
所以它必须看起来像这样:“http://www.example.com/start/”,
而不是这样:“http://www.example.com/start”
感谢您的帮助!
答案 0 :(得分: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]
主要是,您的模式末尾有/$
:RewriteRule ^(.*)/$ /index.php?/$1
这意味着它必须以斜杠结尾才能匹配模式。将其更改为(.*?)/?$
会使其成为可选项。