htaccess:检查字符串是否在请求中的条件

时间:2016-10-03 13:31:46

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

我需要为mod重写URL规则编写一个条件,以检测正在执行的页面。

RewriteRule我使用的工作正常,但问题是我需要对两个不同的网址使用相同的规则。

RewriteRule ^testing/([^/]*)$ /index.php?url=$1&name=&submit=submit [NC,L] 
RewriteRule ^testing/([^/]*)$ /test.php?url=$1&name=&submit=submit [NC,L]

在未设置任何重写条件的情况下,在浏览器中添加example.com/testing/时,无论我是RewriteRule还是{{1},都会使用htaccess中的第一个index.php }}

这是test.php我试过的一些内容:      RewriteCond
     RewriteCond %{REQUEST_FILENAME} /test.php$
     RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ (test\.php)/ [NC]
     RewriteCond %{THE_REQUEST} \s/+(test\.php)/ [NC]

并且是完整的htaccess文件代码:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /test\.php/

如何让第一个(index.php)Options +FollowSymLinks RewriteEngine on ## check if on index.php ## RewriteCond %{THE_REQUEST} ^.*\/index.php\/.*$ ## not working ## ## if on index.php do this ## RewriteRule ^testing/([^/]*)$ /index.php?url=$1&name=&submit=submit [NC,L] ## check if on test.php ## RewriteCond %{THE_REQUEST} ^.*\/test.php\/.*$ ## not working ## ## If on test.php do this ## RewriteRule ^testing/([^/]*)$ /test.php?url=$1&name=&submit=submit [NC,L] rewriteRule上工作,但在index.php页面上忽略第一个规则并使用第二个规则?

谢谢:)

编辑:只是为了澄清。我不想重定向。我只想根据我所在的页面更改test.php的值。正如我所提到的,rewriteRule已经正常工作了。

2 个答案:

答案 0 :(得分:0)

 public IQueryable<User> GetUsers() 
 {
    IQueryable<User> users;
    using (UserContext userContext = new UserContext())
    {
        users = userContext.Users;

        if (users.Any() == false)
        {
            return null;
        }
        else
        {
            return users;
        }
    }
}

试试这个

答案 1 :(得分:0)

RewriteEngine On

#Checking if /index.php/ apears in URI
RewriteCond %{REQUEST_URI} ^(.*)\/index\.php\/(.*)$ [NC]
RewriteRule ^(.*)$ testing/index.php?url=$1&name=&submit=submit [NC]

这将显示 index.php?url = sth1 / index.php / sth2 输出,而不是 sth1 / index.php / sth2

祝你好运