我正在开发一个php框架工作,我是.htaccess规则的新手。所以我需要重定向 网址使用.htaccess。网址是
http://localhost/rinocabs/index.php?/Galary/Image/
应转换为此
http://localhost/rinocabs/Galary/Image/
在.htaccess文件中我包含这些规则
Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^localhost/rinocabs/index.php?/Galary/Image/ [nc]
rewriterule ^(.*)$ http://localhost/rinocabs/Galary/Image/$1 [r=301,nc]
但它不起作用。请帮助。
答案 0 :(得分:4)
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index\.php [NC]
RewriteRule ^ %1 [R=301,L]
使用此
本地主机/ rinocabs / index.php的/ Galary /图像/
而不是
本地主机/ rinocabs /的index.php?/ Galary /图像/
答案 1 :(得分:0)
When in doubt, go the Codeigniter route!
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
基本上没有理由在重写规则和条件中包含你网址的域名部分,你的情况看起来很时髦。看看上面的codeigniter示例,我们在表达式中需要做的就是:在路径中找到index.php段,然后去除它,并重写以包含它。你的表达式假定路径总是相同的...如果这是有道理的。
答案 2 :(得分: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]
答案 3 :(得分:0)
请尝试以下代码。它运作正常。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]