以下是我的PHP项目的文件夹结构
PHPProject (Root)
-->Admin/
-->Config/
-->File1.php
-->File2.php
--> ..
--> ..
-->.htaccess
-->File10.php
我想为可以通过以下方式访问的项目启用RewriteURL。
规则1:
应始终使用www.mydomain.com访问我的域名。如果有人试图以http://mydomain.com
身份进行访问,则必须将网址重写为http://www.mydomain.com
。我在我的htaccess上使用以下规则
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#RewriteCond %{HTTP_HOST} !^www\.mydomain\.com [NC]
#RewriteRule ^(.*)$ http://www.mydomain.com/$1 [L,R=301]
</IfModule>
规则2: 我想有一个指向页面的特定URL:
http://www.mydomain.com/username
重写为http://www.mydomain.com/file4.php?name=username
规则3:
我能够让第一条规则与.htaccess文件中的上述信息一起正常工作,但问题是我必须对其上的域名进行硬编码。是否可以指定通用(正则表达式)以使规则适用于多个域?
问题: 我需要帮助将规则1 +规则2 +规则3完全合并为我的.htaccess文件中的规则。
有人可以帮助我实现这个目标。
答案 0 :(得分:1)
RewriteCond %{HTTP_HOST} !^www\.(domain1|domain2|domain3|domain4)\.com [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [L,R=301]
或:
RewriteCond %{HTTP_HOST} !^www\.domain1\.com [NC]
RewriteCond %{HTTP_HOST} !^www\.domain2\.com [NC]
RewriteCond %{HTTP_HOST} !^www\.domain3\.com [NC]
RewriteCond %{HTTP_HOST} !^www\.domain4\.com [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [L,R=301]
http://www.mydomain.com/username
到
http://www.mydomain.com/file4.php?name=username
RewriteRule ^username$ /file4.php?name=username [QSA,NC,L]
如果你想把它变成通用的(用alphanum chars):
RewriteRule ^([a-z0-9]+)$ /file4.php?name=$1 [QSA,NC,L]
全力以赴:
RewriteCond %{HTTP_HOST} !^www\.(domain1|domain2|domain3|domain4)\.com [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [L,R=301]
RewriteRule ^([a-z0-9]+)$ /file4.php?name=$1 [QSA,NC,L]
希望这有帮助。
请尝试使用RewriteLog
指令:它可以帮助您找出此类问题:
# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On
我最喜欢检查regexp的工具:
http://www.quanetic.com/Regex(别忘了选择ereg(POSIX)而不是preg(PCRE)!)
答案 1 :(得分:0)
如果你只需要http,那应该这样做。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST}!^(www\.¦$) [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
而且,其余的你可以使用Front Controller Pattern
。
[Front Controller Pattern
的想法是将您的所有请求重定向到php文件并从那里决定]
请按照以下网址进行操作,如果您有任何疑问,可以提问:)
http://www.phppatterns.com/docs/design/the_front_controller_and_php
http://onlamp.com/pub/a/php/2004/07/08/front_controller.html?page=2