Mod_rewrite-多页

时间:2009-11-01 22:09:44

标签: .htaccess mod-rewrite url-rewriting

我想要重写两个网址:

  1. /artist.php?name=x => /x

  2. /albums.php?title=y => /y

  3. 这是我放在.htaccess文件中的内容:

    RewriteEngine On
    RewriteRule ^([a-zA-Z0-9_-]+)$ artist.php?name=$1
    RewriteRule ^([a-zA-Z0-9_-]+)/$ artist.php?name=$1
    RewriteRule ^([a-zA-Z0-9_-]+)$ albums.php?name=$1
    RewriteRule ^([a-zA-Z0-9_-]+)/$ albums.php?name=$1
    

    我应该如何编辑文件以便执行 albums.php 的URL? (只有第一个正在工作。)感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

您有艺术家和专辑的重复模式,因此他们不可能同时工作!不管怎样,不只是mod_rewrite。 (您的网络应用程序可能会检查是否存在使用提供的名称参数的艺术家或专辑,并确定哪一个是预期的,但这超出了简单的mod_rewrite示例的范围。)

网址中还需要有其他内容来区分艺术家和相册,例如:

RewriteRule ^/artist/([a-zA-Z0-9_-]+)/?$ artist.php?name=$1
RewriteRule ^/album/([a-zA-Z0-9_-]+)/?$ albums.php?name=$1

另请注意,我将您的4个重写规则缩短为2,使用/??是一个意义为“0或1”的量词),以允许带有或不带斜杠的URL。但在我看来,最好选择其中一个,以避免为同一页面提供2个URL。

答案 1 :(得分:0)

RewriteRule ^/artist/([a-zA-Z0-9_-]+)/?$ artist.php?name=$1 [L]
RewriteRule ^/album/([a-zA-Z0-9_-]+)/?$ albums.php?name=$1 [L]