我猜这个问题已被多次询问,但我找不到一个可能会给我我需要的东西。
所以..我可以通过以下网址访问脚本:
http://website.com/index.php/hello/world
http://website.com/hello/world
两者都转到 index.php ,它解析输入(本例中为hello / world)。
这是我的 .htaccess :
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?path=$1&%{QUERY_STRING} [L]
</IfModule>
然而。当像这样访问网站时:
http://website.com/index.php/hello/world
RewriteRule 输出与 index.php类似的内容?path = index.php / hello / world
我想在 RewriteRule
中的 path = 之后删除 index.php答案 0 :(得分:1)
您的.htaccess
文件应该如下所示(请注意检查index.php是否是网址的一部分的新规则):
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^index.php/(.*)$ index.php?path=$1&%{QUERY_STRING} [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?path=$1&%{QUERY_STRING} [L]
</IfModule>
答案 1 :(得分:0)
试试这个
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
答案 2 :(得分:0)
修改Stackoverflow answer的答案以适应此问题
.htaccess:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
# Redirect user
RewriteCond %{THE_REQUEST} ^.*index.php.*
RewriteRule ^(.*)index.php(.*)$ $1$2 [NC,R=301,L]
# Handle the query to PHP
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?path=$1&%{QUERY_STRING} [L]
</IfModule>