有没有办法将IF添加到.htaccess?

时间:2013-12-31 17:30:57

标签: .htaccess

我正在构建一个Web构建器,但我不知道如何使用.htaccess。有没有办法做出类似的东西(我会用PHP写它,因为我的英语不好,所以对我来说更容易):

<?php
     if(ERROR && ONE_NAME){ //There is no page like that, for example: www.example.com/thispageisntexists
          //redirect to page /website.php?webname=thispageisntexists
     }elseif(ERROR && TWO_OR_MORE){ //for example: www.example.com/thispageisntexists/hi.php
          //redirect to page /website.php?webname=thispageisntexists&pagename=hi
          //if url is www.example.com/thispageisntexists/hi.php#hi rediract to /website.php?webname=thispageisntexists&pagename=hi#hi
          //if url is www.example.com/thispageisntexists/hi.php?name=vlad&last=gincher rediract to /website.php?webname=thispageisntexists&pagename=hi$name=vlad&last=gincher
          //and so on...
     }
?>

在website.php里面我会检查页面是否存在,如果没有,它会重定向到404.php,如果它存在,它将显示该网站。

3 个答案:

答案 0 :(得分:1)

我发现有些网址应该被重定向或重写有些不清楚。我假设你有(或想要)像这样http://example.com/aaahttp://example.com/aaa/bbb的seo网址,并希望在内部将其重写为对服务器有意义的内容。

如果已存在查询字符串,您希望它能够正常工作。这意味着您必须使用[QSA]标志连接两个查询字符串。

“没有这样的页面”转换为检查所请求的文件名是否存在的条件。您可以在第二个参数之前使用!否定该条件。那将是RewriteCond %{REQUEST_FILENAME} !-f

#hi是一个锚点。它永远不会发送到服务器。但是,即使重定向请求,您的浏览器也应自动将其附加到网址。

我看到Jon Lin已经发布了一个适合你的.htaccess文件。我仍然会发布这个答案,以澄清那里使用的内容。

答案 1 :(得分:0)

尝试:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/website\.php
RewriteRule ^([^/]+)$ /website.php?webname=$1 [L,R,QSA]
# you can remove the "R" if you don't want to redirect the browser

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/website\.php
RewriteRule ^([^/]+)/(.*?)(\.php)?$ /website.php?webname=$1&pagename=$2 [L,R,QSA]
# you can remove the "R" if you don't want to redirect the browser

答案 2 :(得分:-1)

没有任何明显的IF-THEN-ELSE。 .htaccess 有使用RewriteCond和RewriteRule命令进行条件URL / URI重定向和重写的方法。他们使用“正则表达式”来匹配模式,因此它们不像PHP这样的真实脚本语言那么灵活,但你可以用它们做很多。

RewriteEngine On
RewriteCond  %{REQUEST_FILE}  !-f
RewriteRule  /?(.*)$  /website.php?webname=$1  [L]

可能是我理解你想要做的事情的开始。