Mar*_*ouw 2 php apache .htaccess mod-rewrite codeigniter
我有 5 个域都指向同一个服务器,出于 SEO 的目的,我设置了一个指定主域的规范元链接。
我的问题是,如何从 url 中删除 index.php 并且 301 将我的所有域重定向到主域?
这是我删除 index.php 的 .htaccess
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|robots\.txt|sitemap\.xml)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
ErrorDocument 404 /index.php
Run Code Online (Sandbox Code Playgroud)
这是我的 .htaccess 到 301 重定向
RewriteEngine On
RewriteBase /
RewriteCond %{SERVER_NAME} !^www.example.com$
RewriteRule .* http://www.example.com%{REQUEST_URI} [R=301,L]
Run Code Online (Sandbox Code Playgroud)
我试图合并两者,但后来得到了一些奇怪的结果,它会重定向域,但将整个 url 作为页面的参数...
您需要在路由规则之前发生重定向(将所有内容发送到的规则/index.php:
RewriteEngine On
RewriteCond %{SERVER_NAME} !^www.example.com$
RewriteRule .* http://www.example.com%{REQUEST_URI} [R=301,L]
RewriteCond $1 !^(index\.php|robots\.txt|sitemap\.xml)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
ErrorDocument 404 /index.php
DirectoryIndex index.php
Run Code Online (Sandbox Code Playgroud)