PHP mod_rewrite& .htaccess用于干净的URL

时间:2014-01-21 00:25:24

标签: php apache .htaccess

我正在尝试重写以下3个网址,以便翻译成正确的网页。

highscore.php在我的主目录

    www.domain.com/clan/
    www.domain.com/highscore.php

    www.domain.com/clan/Halos
    www.domain.com/highscore.php?clan=Halos

    www.domain.com/clan/Halos/Cooking
    www.domain.com/highscore.php?clan=Halos&view=Cooking

我的.htaccess中有以下内容:

    RewriteEngine On
    #RewriteBase /
    RewriteRule ^clan/([^/]*)$ /highscore.php?clan=$1&view=$2 [L]

这成功映射了以下网址:

    www.domain.com/clan/Halos

    www.domain.com/highscore.php?clan=Halos

以下网址转到带有空'clan'参数

的hi​​ghscore.php页面
    www.domain.com/clan/

正在映射到

    www.domain.com/highscore.php?clan=

我正试图让它映射到

    www.domain.com/highscore.php

当我去

    www.domain.com/clan/Halos/Cooking

它只能识别第一个参数'Halos'而不是第二个参数'Cooking'?它需要我:

    www.domain.com/highscore.php?clan=Halos

非常困惑,我需要一些方向来解决我正确和/或错误的问题。

2 个答案:

答案 0 :(得分:1)

RewriteEngine On
#RewriteBase /

#Rewrite base path
RewriteRule ^clan/$ /highscore.php [L]
#Rewrite clan path
RewriteRule ^clan/([^/]*)$ /highscore.php?clan=$1 [L]
#Rewrite view path
RewriteRule ^clan/([^/]*)/([^/]*)$ /highscore.php?clan=$1&view=$2 [L]

答案 1 :(得分:0)

您的重写规则在表达式中没有第二个提取部分,因此只提取一个参数。以下是如何提取第二个参数:

RewriteRule ^clan/([^/]*)/([^/]*)$ /highscore.php?clan=$1&view=$2 [L]

现在你在这里提取两个部分(用括号表示)。