使用 5 个页面的 mod-Rewrite(通配符子域)
Posted
技术标签:
【中文标题】使用 5 个页面的 mod-Rewrite(通配符子域)【英文标题】:Using mod-Rewrite with 5 pages (wildcard sub-domain) 【发布时间】:2013-01-30 00:56:45 【问题描述】:假设我有 5 页(index.php
、about.php
、portfolio.php
、gallery.php
、contact.php
)。
假设 id 是1
。
原来的网址是:
www.domain.com/folder/index.php?id=1
,
www.domain.com/folder/about.php?id=1
等等……
现在,我想把它改成:
1.domain.com/index
,
1.domain.com/about
,
1.domain.com/portfolio
,
1.domain.com/gallery
,
1.domain.com/contact
是否可以使用 mod-rewrite ?如果我在index.php
页面中,如果可以进行mod-rewrite,<a href="" >
是什么about.php
?
非常感谢 :D 非常感谢你的帮助 :D
编辑
还有一件事,我的通配符子域文件夹是public_html/folder/
Anubhava的解决方案
使用子域代码编辑:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
# EDIT BY ANUBHAVA: to make http://1.domain.com/ load /about as default page
# Replace /about with any other page you want as default page
RewriteCond %HTTP_HOST ^1\.(domain\.com$ [NC]
RewriteRule ^$ /about [L]
RewriteCond %HTTP_HOST !^www.domain.com$ [NC]
RewriteCond %HTTP_HOST ^(www.)?([^.]+).domain.com$ [NC]
RewriteRule ^(index|about|portfolio|gallery|contact)/?$ /$1.php?id=%2 [L,NC,QSA]
确保您的通配符子域目录是页面所在的位置。还将您的 .htaccess 文件放在页面所在的目录中。
【问题讨论】:
【参考方案1】:通过httpd.conf
启用mod_rewrite和.htaccess,然后把这段代码放到你.htaccess
的DOCUMENT_ROOT
目录下:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
# EDIT: to make http://1.domain.com/ load /about
RewriteCond %HTTP_HOST ^1\.(domain\.com$ [NC]
RewriteRule ^$ /about [L]
RewriteCond %HTTP_HOST ^1\.(domain\.com$ [NC]
RewriteRule ^(index|about|portfolio|gallery|contact)/?$ http://www.%1/folder/$1.php?id=1 [R=302,L,NC,QSA]
一旦到位,请创建这样的 href 链接:
<a href="http://1.domain.com/about">About Us</a>
或 <a href="http://1.domain.com/contact">Contact Us</a>
【讨论】:
id变了怎么办?假设它更改为2
。以及如何重写子域1.domain.com
?感谢您的回答:D
哦,没有意识到您想要在1.domain.com
中重写 URL,现在查看编辑后的答案。如果您的 id 发生变化,那么您只需要在 RewriteRule 行上方进行更改。
它可以工作,但是如果用户只是在浏览器 url 框中输入http://www.1.domain.com
,如何使about.php
成为默认登录页面?非常感谢,不知道它只需要 6 行代码就可以工作:D。再次感谢。但是你能帮我设置默认登陆页面吗:D
要将/1.domain.com/about
设为默认页面,您可以使用我上面编辑部分的代码。
抱歉,我找不到是哪一个。我仍然是 mod-rewrite 的新手:D【参考方案2】:
您需要更改 .htaccess 文件。编写下面的代码,它将隐藏文件的扩展名。
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^([a-zA-Z])\$ $1.php [NC]
然后,您将在锚链接中提供 URL,例如 /index 等。
干杯。
【讨论】:
谢谢,我现在试试,子域1.domain.com
怎么样?以上是关于使用 5 个页面的 mod-Rewrite(通配符子域)的主要内容,如果未能解决你的问题,请参考以下文章
405使用mod-rewrite对PHP脚本的PUT请求出错