我使用了下一个.htaccess
代码:
RewriteEngine on
# if the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule ^(.*)$ index.php/$1 [L]
它工作得很好,但它可以使用index.php
并且没有它的所有页面都可用,例如:
http://localhost/framework/about
http://localhost/framework/index.php/about // need redirect to http://localhost/framework/about
我想将带有index.php
的所有请求重定向到没有index.php
的SEO原因,如何删除index.php
?
答案 0 :(得分:2)
试试这个
RewriteEngine on
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/([^/]+)/index\.php/(.+)\s [NC]
RewriteRule ^.*$ /%1/%2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
%{THE_REQUEST}
包含由...发送的完整HTTP请求行
浏览器到服务器(例如,GET /index.html HTTP/1.1
)RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/([^/]+)/index\.php/(.+)\s
[NC]
与GET /xxx/index.php/yyyy
匹配,其中 xxx 为framework
而 yyy 为about/something/what/you/want
或者只是about
如果你
想要(可能也是POST
或另一个而不是GET
,但这并不重要。)示例:/framework/index.php/everything/about/me
将重定向至/framework/everything/about/me
,或/framework/index.php/about
将重定向至/framework/about
答案 1 :(得分:1)
非常确定以下内容会将所有内容重定向到$_SERVER['PATH_INFO']
index.php
var
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !.index.ph.*
RewriteRule ^(.*)$ /index.php
自从我使用这种方法以来已经有一段时间了。
或者你可以像这样使用ForceType
:
<Files *>
ForceType application/x-httpd-php
</Files>
<Files *\.*>
ForceType None
</Files>
这将允许您拥有一个名为about
的PHP文件(无扩展名)并将其作为PHP执行。