.htaccess RewriteRule在子目录中,带有PHP GET变量

时间:2014-11-17 00:33:22

标签: php apache .htaccess mod-rewrite rewrite

这里有两个与.htaccess和PHP GET变量有关的问题。

基本上,我正在动漫网站上工作,我希望能够加载site.com/anime/AnimeName

现在,我将其作为site.com/anime/index.php?watch=AnimeName

我能够为我的用户个人资料执行此操作:

RewriteEngine On
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^(.*)$ /profile.php?username=$1 

我尝试使用.htaccess子目录中/anime/的类似方法,但我似乎无法让它发挥作用。

我的第二个问题(并非与主要问题一样重要),我想知道如何为.htaccess文件设置两个变量。

例如:我有site.com/anime/?watch=AnimeName&ep=Ep#

的剧集

基本上,我想知道如何让它像这样: 第一集site.com/anime/AnimeName/1,第二集site.com/anime/AnimeName/2,依此类推。

<小时/> 更新:我在我的主.htaccess文件中执行了此操作,它适用于用户名和动漫。

RewriteEngine On
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^u/(.*)$ /profile.php?username=$1 
RewriteRule ^a/(.*)$ /anime.php?watch=$1 

现在,我怎样才能做到这一点: 第1集site.com/a/AnimeName/1

我试过这个但是它没有工作:     RewriteRule ^(。*)$ / a /&amp; ep = $ 1 无论哪种方式, 谢谢高级。

1 个答案:

答案 0 :(得分:1)

重写条件会立即应用于遵循规则。所以你需要复制条件。

RewriteEngine On
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^u/(.*)$ /profile.php?username=$1 [L]
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^a/(.*)$ /anime.php?watch=$1 [L]

但是,如果/a//u/不是真正的子目录,那么您就不需要这些条件。对于附加参数,您需要第3条规则:

RewriteEngine On
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^u/(.*)$ /profile.php?username=$1 [L]
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^a/([^/]+)$ /anime.php?watch=$1 [L]
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^a/([^/]+)/([0-9]+)$ /anime.php?watch=$1&ep=$2 [L]