【问题标题】:.htaccess data to another url.htaccess 数据到另一个 url
【发布时间】:2014-09-04 07:42:02
【问题描述】:

一开始:我无权在我正在处理的网站上编辑任何 PHP。

问题是旧的 .htaccess 丢失了:

有两种类型的链接(我需要写反向规则):

第一个:“模块标题ID”

这很容易:

RewriteRule  ^([^/]+)-([^/]+)-([^/]+).html?$ index.php?mod=$1&id=$3

如您所见,实际链接类似于“index.php?mod=$1&id=$3”

但我对那个有问题:

"page.html?foo=bar" 所以我尝试了类似的方法:

RewriteRule  ^([^/]+).html\?([^/]+)\=([^/]+)$ index.php?mod=$1&$2=$3

它的工作原理是这样的:“index.php?foo=bar”

我该怎么做?

其余的看起来像这样:

#Options +FollowSymLinks
RewriteEngine On
#RewriteBase '/'

RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule  ^([^/]+)-([^/]+)-([^/]+).html?$ index.php?mod=$1&id=$3
RewriteRule  ^([^/]+).html\?([^/]+)\=([^/]+)$ index.php?mod=$1&$2=$3 [QSA,L]
RewriteRule  index.html index.php

【问题讨论】:

    标签: apache .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    你可以使用:

    #Options +FollowSymLinks
    RewriteEngine On
    #RewriteBase /
    
    RewriteCond %{HTTP_HOST} !^www\. 
    RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    
    RewriteRule  ^([^/]+)-([^/]+)-([^/]+)\.html?$ index.php?mod=$1&id=$3 [L,QSA]
    
    RewriteRule  ^(.+?)\.html?$ index.php?mod=$1 [QSA,L]
    
    RewriteRule  ^reservation-save\.html$ reservation.html?t=1 [QSA,L]
    
    RewriteRule ^index\.html$ index.php [L]
    

    【讨论】:

    • 你是我的个人英雄。非常感谢!
    • 所以在“?”之后一切 - 键和值自动发布到变量?
    • 不客气。是的,查询字符串会自动转移到新的 URL。
    • anubhava 您没有捕获其他项目,因此可以删除其余条件并将其简化为 - RewriteRule ^([^/]+)\.html$ /index.php?mod=$1 [QSA,L]
    • 其实很简单:RewriteRule ^([^/]+)-([^/]+)\.html?$ index.php?mod=$1&act=$2 [L,QSA ] 再次感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 2013-08-04
    • 2012-12-04
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多