.htaccess重写@username和@ username / photos

时间:2014-09-15 02:24:43

标签: .htaccess rewrite

嗨,伙计们,我正在尝试重写网址但收到错误

我想改写

www.example.com/photos.php?u=username

www.example.com/@username/photos

这是我的代码

IndexIgnore *

RewriteEngine On
Options +FollowSymLinks


RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^@([A-Za-z0-9]+)$ user.php?u=$1 [NC,L]
RewriteRule ^@([A-Za-z0-9]+)$/^([A-Za-z0-9]+)$ user.php?u=$1  photos.php?u=$1 [NC,L]

1 个答案:

答案 0 :(得分:1)

您的第一个RewriteRule看起来不错,但您的第二个RewriteRule充满了错误。

  1. 您尝试使用2个不同的地址来提供规则的右侧,如下所示:

    user.php?u=$1  photos.php?u=$1
    
  2. 你左边的规则在正则表达式的中间有一个终止符号,之后你就开始了一个新的正则表达式,它不会起作用:

    ^@([A-Za-z0-9]+)$/^([A-Za-z0-9]+)$
    
  3. 这应该可以满足您的需求,并且应该放在.htaccess文件中,该文件应该与您的域ROOT文件夹一起位于photos.phpuser.php文件中它不会起作用。

    IndexIgnore *
    
    Options +FollowSymLinks -MultiViews
    
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^@([a-zA-Z0-9]+)/photos$ photos.php?u=$1 [QSA,L]
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^@([a-zA-Z0-9]+)$ user.php?u=$1 [QSA,L]
    

    如果您有不同的文件夹设置,请更新您的问题以及更多信息,以便我可以更新规则以适应它。

    以上规则允许您按以下格式访问照片页面:

    www.example.com/@username/photos
    

    用户页面采用以下格式:

    www.example.com/@username