【问题标题】:Apache Htaccess rewrite rulesApache Htaccess 重写规则
【发布时间】:2014-11-21 12:46:18
【问题描述】:

我必须编写一个 htaccess 来重写链接,如下所示,还有一个 404 的重定向 错误页面到我的网站根目录(主页)

www.example.com/index.php?page=find&name=detail&id=109&cid=8
www.example.com/index.php?page=find&name=detail&id=109
www.example.com/index.php?page=find&name=detail
www.example.com/index.php?page=find

应该改写成

www.example.com/find/name/detail/id/109/cid/8
www.example.com/find/name/detail/id/109
www.example.com/find/name/detail
www.example.com/find

【问题讨论】:

  • 如果 URL 是 www.example.com/foobar 应该是 404 还是 www.example.com/index.php?page=foobar

标签: apache .htaccess mod-rewrite url-rewriting http-status-code-404


【解决方案1】:

试试这个代码:

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule (.*)/([a-zA-z0-9]*)/(.*)/([a-zA-z0-9]*)/(.*)/([a-zA-z0-9]*)/(.*)/([a-zA-z0-9]*)/(.*)\.html index.php?itfpage=$1&$2=$3&$4=$5&$6=$7$8=$9 [L]
RewriteRule (.*)/([a-zA-z0-9]*)/(.*)/([a-zA-z0-9]*)/(.*)/([a-zA-z0-9]*)/(.*)\.html index.php?itfpage=$1&$2=$3&$4=$5&$6=$7 [L]
RewriteRule (.*)/([a-zA-z0-9]*)/(.*)/([a-zA-z0-9]*)/(.*)\.html index.php?itfpage=$1&$2=$3&$4=$5 [L]
RewriteRule (.*)/([a-zA-Z]*)/(.*)\.html index.php?itfpage=$1&$2=$3 [L]

【讨论】:

    【解决方案2】:

    试试:

    RewriteEngine On
    RewriteRule ^find$ index.php?page=find [L,QSA]
    RewriteRule ^(find)/([^/]+)/([^/]+)(.*)$ /$1$4?$2=$3 [L,QSA]
    FallbackResource /
    

    【讨论】:

      【解决方案3】:

      您的 htaccess 规则,

      <IfModule mod_rewrite.c>
      Options +FollowSymLinks
      RewriteEngine On
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ index.php?file=$1 [L,QSA]
      RewriteRule ^([a-zA-Z]+)/page/([a-zA-Z]+)/id/([0-9]+)/cid/([0-9]+)/$ index.php?page=find&name=detail&id=109&cid=8 [L]
      RewriteRule ^([a-zA-Z]+)/page/([a-zA-Z]+)/id/([0-9]+)/$ index.php?page=find&name=detail&id=109 [L]
      RewriteRule ^([a-zA-Z]+)/page/([a-zA-Z]+)/$ index.php?page=find&name=detail [L]
      RewriteRule ^([a-zA-Z]+)/$ index.php?page=find [L]
      </IfModule>
      

      【讨论】:

      • 非常感谢,但我也希望 page、id、cid 这些也作为变量。还有一个 404 错误重定向到我的主页。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-22
      • 2014-04-24
      • 2014-06-30
      • 2016-08-09
      • 2012-08-22
      • 1970-01-01
      相关资源
      最近更新 更多