代码之家  ›  专栏  ›  技术社区  ›  user97410

mod_rewrite to redirect/index.whatever to/is not working

  •  0
  • user97410  · 技术社区  · 15 年前

    我想将index.html_php_php5的所有请求重定向到 http://www.domain.co.uk/ 使用mod_rewrite,我已经用php逐字地从一本关于搜索引擎优化的书中复制了代码,然后添加到php5选项中,但它不起作用。这是我的完整.htaccess文件:

    RewriteEngine On
    
    #translate any .html ending into .php5
    RewriteRule ^(.*)\.html$ /$1\.php5
    
    RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php5|php|html)\HTTP
    RewriteRule ^(.*)index\.(php5|php|html)$ /$1 [R=301,L]
    
    #change / for ?
    RewriteRule ^(.*)\.html/(.*)$ /$1\.html?$2
    
    #strip .html from search res page
    RewriteRule ^(.*)search/(.*)$ /$1search_results\.html/search=$2
    
    #translate product details link from search res page
    RewriteRule ^products/(.*)/(.*)/(.*)$ /product_details.php5?category=$1&title=$2&id=$3 [L]
    
    #Translate products/psorisis/chamomile-skin-cream-P[x] to productview.php5?id=1
    RewriteRule ^products/.*-P([0-9]+) /productview.php5?id=$1 [L]
    

    我不知道那有什么问题,其余的都很好,很漂亮。有人有什么想法吗?

    1 回复  |  直到 15 年前
        1
  •  2
  •   seth    15 年前

    我想是因为你的重写第二遍以 \HTTP .

    把它改成:

    RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php5|php|html)
    RewriteRule ^(.*)index\.(php5|php|html)$ /$1 [R=301,L]
    

    如果要匹配请求的HTTP,请在那里放置一个空间

    RewriteCond %{THE_REQUEST} ^GET\ .*/index\.(php5|php|html)\ HTTP
    RewriteRule ^(.*)index\.(php5|php|html)$ /$1 [R=301,L]