3 .htaccess URL重写中的斜杠

时间:2013-11-12 15:49:45

标签: php apache .htaccess mod-rewrite url-rewriting

基本上我已经创建了一个PHP网站,它使用其他网站的API来提取数据。 我的问题是我得到错误404。

我将以下代码添加到.htaccess

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

这使得website.com/sort/gender工作了!

但是我有另一个页面名称user.php 我添加了

RewriteRule ^profile/(.*) user.php?name=$1

制作website.com/profile/username

但我想要展示

website.com/profile/username/bookmarks

而不是

website.com/profile/username?by=bookmarks

我的完整.htaccess代码如下:

RewriteEngine on
Options +FollowSymLinks -MultiViews
RewriteBase /
ErrorDocument 404 /404.php
RewriteRule ^sort/(.*) index.php?by=$1
RewriteRule ^profile/(.*) user.php?name=$1
RewriteRule    ^privacy/?$    privacy.php    [NC,L]

2 个答案:

答案 0 :(得分:0)

你可以在其中添加另外一个带有2个通配符的rewriterule:

RewriteRule ^profile/(.*)/(.*) user.php?name=$1&by=$2
RewriteRule ^profile/(.*) user.php?name=$1

答案 1 :(得分:0)

现有的重写规则中有一些缺少标记和不正确的正则表达式。

你完整的.htaccess会是这样的:

ErrorDocument 404 /404.php

RewriteEngine on
Options +FollowSymLinks -MultiViews
RewriteBase /

RewriteRule ^sort/([^/]+)/?$ index.php?by=$1 [L,NC,QSA]

RewriteRule ^(profile)/([^/]+)/([^/]+)/?$ $1/$2?by=$3 [L,NC,QSA]

RewriteRule ^profile/([^/]+)/?$ user.php?name=$1 [L,NC,QSA]

RewriteRule ^privacy/?$ privacy.php [NC,L,QSA]