Nor*_*rse 13 regex apache .htaccess mod-rewrite redirect
我一直在尝试从这个网站的各种解决方案,似乎没有工作.我目前正在托管主持人.这是我目前的.htaccess文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
<IfModule mod_suphp.c>
suPHP_ConfigPath /home/user/php.ini
<Files php.ini>
order allow,deny
deny from all
</Files>
</IfModule>
Run Code Online (Sandbox Code Playgroud)
这是在我的网站的根文件夹中.我也试过添加一个?后index.php没有运气.有谁知道为什么这不起作用?
anu*_*ava 52
这是您可以在.htaccess(在DOCUMENT_ROOT下)中使用的代码,用于从URI中删除index.php:
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]
Run Code Online (Sandbox Code Playgroud)
小智 6
Symfony 2具有出色的解决方案:
RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
# Sets the HTTP_AUTHORIZATION header removed by apache
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^index\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
RewriteRule .? %{ENV:BASE}/index.php [L]
Run Code Online (Sandbox Code Playgroud)
这样可以完成以下任务:
RewriteBase 不必要(当站点位于网络根目录下的子目录中时很有用)index.php 如果存在则删除index.php原始请求中的完整查询字符串将请求路由到正确的位置注意这一行:
RewriteRule ^(.*) - [E=BASE:%1]
Run Code Online (Sandbox Code Playgroud)
负责设置%{ENV:BASE}变量以备后用。请参阅flag上的Apache文档E|env。