【问题标题】:htaccess Apache RewriteRule .asp to .phphtaccess Apache RewriteRule .asp 到 .php
【发布时间】:2016-04-06 19:34:30
【问题描述】:

我正在尝试在 htaccess 中使用 RewriteRule 来永久重定向:

http://www.example.com/store/scripts/prodView.asp?idproduct=240

http://www.example.com/index.php?route=product/product&path=59&product_id=50

我试过了:

选项 +FollowSymlinks

重写引擎开启

RewriteCond %{QUERY_STRING} ^idproduct=240$ [NC]

RewriteRule ^store/scripts/prodView.asp$ index.php\?route=product/product\&path\=59\&product_id\=50? [L,NC,R=301]

.htaccess 在根目录

谁能建议我哪里出错了?谢谢

【问题讨论】:

    标签: php apache .htaccess mod-rewrite


    【解决方案1】:

    尝试:

    Options +FollowSymlinks
    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^idproduct=240$ [NC]
    RewriteRule ^store/scripts/prodView\.asp$ index.php?route=product/product\&path=59\&product_id=50 [L,NC,R=301]
    

    RewriteRule url 中没有\?

    【讨论】:

    • 到底是什么问题?错误信息 ?索引页面未加载或链接错误?
    • Croises 13,我应该在原始问题中说明这一点:问题是该浏览器根本没有重写 URL,而 URL 地址栏中仍然存在(不正确的)旧 URL。这会导致生成错误(无法定位)页面。好像 htaccess 被忽略了,但我知道它不是因为 htaccess 中的其他命令被遵循
    【解决方案2】:

    我在 Croises 的帮助下解决了这个问题,虽然我不知道问题的全部原因。

    在我最初的问题中,为了简洁、相关和清晰,我遗漏了一些位于我正在编写的代码之上的 RewriteRule 代码。此代码由购物车软件提供。

    RewriteRule 代码的总和是这样的:

    Options +FollowSymlinks
    RewriteEngine On
    RewriteBase /
    
    RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
    RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
    RewriteRule ^download/(.*) /index.php?route=error/not_found [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
    RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
    
    #my code start
    RewriteCond %{QUERY_STRING} ^idproduct=240$ [NC]
    RewriteRule ^store/scripts/prodView\.asp$ index.php?route=product/product\&path=59\&product_id=50 [L,NC,R=301]
    #my code end
    

    下面的 Croises 问题让我思考“为什么我的代码被忽略了?”。因此,我将我的代码放在了购物车的 RewriteRule 代码之上,现在它可以工作了,虽然我不明白为什么其他代码会干扰我的代码。

    现在有效的代码是:

    Options +FollowSymlinks
    RewriteEngine On
    
    RewriteBase /
    
    #my code start
    RewriteCond %{QUERY_STRING} ^idproduct=240$ [NC]
    RewriteRule ^store/scripts/prodView\.asp$ index.php?route=product/product\&path=59\&product_id=50 [L,NC,R=301]
    #my code end
    
    #original code
    RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
    RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
    RewriteRule ^download/(.*) /index.php?route=error/not_found [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
    RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
    #original code
    

    我想我因此在 Croises 的帮助下回答了我的问题。我很抱歉在原始问题中遗漏了一些重要信息

    【讨论】:

      猜你喜欢
      • 2017-04-21
      • 2012-12-29
      • 2016-04-06
      • 2012-11-27
      • 2014-07-04
      • 2020-07-17
      • 2012-12-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多