.htaccess重写规则,使更长的网址工作

时间:2015-04-13 16:24:23

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

我有一个重写规则,允许我能够拥有这样的网址..

http://example.com/randyt

并将其转换为

http://example.com/?aff=randyt
然而,它正在工作,我还有其他需要使用的链接,例如....

example.com/members/aff/go/randyt

example.com/members

example.com/members/signup

等等。重写规则我忽略了那些网址,只是去了     example.com

请帮我添加一些内容,这样就不会忽略任何包含/ members或/ members / ....的网址。

以下是我现在使用的代码......

RewriteEngine On
RewriteBase /

# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.+) ?aff=$1 [L,QSA]

对于我在这里的新评论部分感到抱歉lol。

所以这里是上面的代码,其中添加了有人建议的代码

RewriteEngine On
RewriteBase /

# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.+) ?aff=$1 [L,QSA]

RewriteCond %{REQUEST_URI} ^/members 
RewriteRule . - [L]

当我尝试使用扩展的URL时,它仍会返回到根网址,只显示根目录中的index.php。

当有人使用这样的网址时....

example.com/members/aff/go/randyt

我需要它使用该联盟代码留在会员目录中。目前的计划应该照顾好。

这是成员目录中的.htaccess代码

<IfModule mod_rewrite.c>
    RewriteEngine on
#    RewriteBase /members
    RewriteRule ^public public.php [L]
    RewriteRule ^js.php js.php [L]
    RewriteRule !\.(js|ico|gif|jpg|png|css|swf|csv|html)$ index.php
</IfModule>

<IfModule mod_php5.c>
#  php_flag magic_quotes_gpc off
</IfModule>

该代码是由我购买该程序的公司预先编写的。

总而言之,我需要做两件不同的事情......

如果有人使用:

example.com/randyt     (randyt can be any username)

它需要留在example.com上显示该页面(index.php文件)

如果有人使用:

example.com/members/aff/go/randyt    (again randyt can be any username)

它需要保留在成员目录中并使用购买的脚本。

2 个答案:

答案 0 :(得分:0)

您可以为.htaccess

添加条件
RewriteCond %{REQUEST_URI} ^/members 
RewriteRule . - [L]

此条件将检查请求的URI是否包含以/ member开头的字符串,然后它将不变地传递到其目标。

答案 1 :(得分:0)

/members/.htaccess中尝试此规则:

DirectoryIndex index.php
RewriteEngine on
RewriteBase /members/

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

# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]