无法使RewriteEngine URL生效

时间:2014-05-16 13:30:36

标签: php regex apache .htaccess mod-rewrite

目前我的链接如下:

http://config.website.nl/?show=home 我希望它看起来像这样: http://config.website.nl/Home

现在我一直在研究很多RewriteEngine脚本,但它们都是更先进的,我似乎无法让它工作......

这是我目前的代码:

RewriteEngine On
# RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php
RewriteRule ^/(.*)/ index.php?show=$1

3 个答案:

答案 0 :(得分:1)

保持你的.htaccess像这样:

RewriteEngine On

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

RewriteCond %{THE_REQUEST} \s/+(?:index\.php)?\?show=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=302,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?show=$1 [L,QSA]

答案 1 :(得分:0)

你走了:

的.htaccess

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule (.*) index.php?show=$1

的index.php

<?php
$show = (isset($_REQUEST['show'])) ? strtolower($_REQUEST['show']) : null;

print_r($_REQUEST);

switch ($show) { 
    case "about":
        echo 'About us... <a href="/home">Go back home</a>';
    break;

    case "home":
    default:
        echo 'Welcome to the home page... <a href="/about">Visit the about us page</a>';    
    break;
}

?>

要小心:很多人都认为.htaccess会自动地“#t;将您撰写的所有链接index.php?show=about更改为/about。不是这种情况。您必须配置PHP以手动以正确的格式回显链接(参见上文)。

P.S。根据服务器的不同,您可能需要也可能不需要RewriteBase行。这就是为什么你会在几个例子中看到它的注释。

答案 2 :(得分:0)

我认为你在上一次重写规则中只有一个额外的斜杠。尝试:

RewriteRule ^/(.*) index.php?show=$1