【问题标题】:multiple .htaccess rewrite rule failing多个 .htaccess 重写规则失败
【发布时间】:2015-12-04 20:49:11
【问题描述】:

我正在尝试创建 .htaccess 来创建友好的 url。

我已经使一些网址工作,但其他人没有工作。我在 .htaccess 文件中使用以下代码。

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.airporttransfer4u.co.uk$ [NC]
RewriteRule ^(.*)$ http://www.airporttransfer4u.co.uk/$1 [L,R=301]

RewriteCond %{HTTP_HOST} ^195\.20\.236\.228
RewriteRule (.*) http://www.airporttransfer4u.co.uk/$1 [R=301,L]

ErrorDocument 404 /404.php 


RewriteBase /
RewriteCond %{REQUEST_URI} !^/admin/
 RewriteCond %{REQUEST_URI} !\.(gif|jpg|png|css|js|etc|flv|swf|mp4|mov)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?p=$1 [L,QSA]
RewriteRule ^recover/([^/]*)$ /recover.php?mode=$1 [L,QSA]

recover.php 的 url 失败,但 index.php 规则有效。 Recover.php 规则指向 404 页面。

我还有多个变量 url 可以转换为友好的 url。示例

index.php?p=blog_item&id=52

知道为什么会失败吗?

【问题讨论】:

    标签: .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    按此顺序制定规则:

    ErrorDocument 404 /404.php 
    Options +FollowSymLinks -MultiViews
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{HTTP_HOST} !^www\.airporttransfer4u\.co\.uk$ [NC]
    RewriteRule ^(.*)$ http://www.airporttransfer4u.co.uk/$1 [L,R=301]
    
    RewriteRule ^recover/([^/]+)/?$ /recover.php?mode=$1 [L,QSA]
    
    RewriteCond %{REQUEST_URI} !^/admin/
    RewriteCond %{REQUEST_URI} !\.(gif|jpg|png|css|js|etc|flv|swf|mp4|mov)$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.+)$ index.php?p=$1 [L,QSA]
    

    【讨论】:

    • 我试过了,但我认为这次 css 文件失败了
    • 您可以在页面 HTML 的 <head> 部分下方添加:<base href="/" />
    猜你喜欢
    • 2015-02-15
    • 2017-11-21
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 2011-02-04
    • 2021-02-09
    相关资源
    最近更新 更多