Url转发的实现很简单,只要域名商支持Url转发就行了,但是也有不支持转发的域名商,譬如:Godaddy。这时就需要用其它的办法实现。
这里介绍一下用Mode Rewrite实现域名转发,这里以域名www.dy03.cn来做例子。
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^dy03.cn [NC]
RewriteRule ^(.*)$ http://www.dy03.cn/$1 [L,R=301]
</IfModule>
其实我对mod_rewrite的规则写法也不是很了解,只是了解一点点,简单说一下这个规则的意思,不知道对不对。
RewriteCond指的是应用转发规则的条件;RewriteRule则是转发的方法。
目前开发项目都会用到Rewrite功能,今天稍微研究了一下。记录一下我的配置方法。
注:未考虑安全问题,只为本地开发使用,服务器不建议使用本配置。
WinXp下Apache2.2开启虚拟主机Mod_rewrite功能(.htaccess):
CakePHP的框架默认的.htaccess不能完美支持Godaddy主机空间。也不是Godaddy空间的Htaccess有问题,而是我们没有写好.htaccess。您可以参考如下代码来配置您的CakePHP项目。
CakePHP框架会把urls重写对自己的友好的urls,适合MVC项目的实施。假如有某一目录不需要CakePHP重写,假如没有重新定义.htaccess将无法访问此目录。假如配置环境为php fastCGI可能会出现:No input file specified.错误。
这时可以自己为.htaccess加一段代码,告诉服务器不转发此子目录即可,这时需要注意的是,此子目录的名称不能为CakePHP Controller的名称(name值)。
修改网站主目录中.htaccess如下(本人使用的CakePHP版本为,最新的CakePHP稳定版:1.2.2.8120 Stable):
# 不重写subdirectory目录
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^/subdirectory/(.*)$
RewriteRule ^.*$ - [L]
</IfModule><IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
很多站长会将自己的网站加上一个Google网站管理员工具,假如用CakePHP开发的项目,也需要对主目录的.htaccess加以修改。代码如下:
伪静态已经不是一个新鲜的名词了,尤其是在现今SEO的炒作中。如何实现伪静态这是每个程序员都关心的问题,除非您不搞SEO。大多的伪静态都是以Htaccess(Apache mod_rewrite)来实现的,但是一个规划不太好的网站要用Htaccess实现,需要写一大堆的代码,而还有某种原因我们不得不放弃Htaccess,或是由于服务器不支持,或是个人偏好等等。
对于单入口(访问网站必需首先通过某一文件,一般都是index.php来实现其它功能的项目)程序来说:
常见的Url大都为:http://www.phplamp.org/index.php?controller=posts&action=index
说实话这样的URL很难看,最重要的是搜索引擎不认它为正常的URL,这很可怕。如何实现一个好看的且与搜索引擎能攀上亲的URL呢。
看这个URL:http://www.phplamp.org/index.php/posts/index/
discuz7.0 搜索引擎优化.htaccess内容如下:
点击下载:discuz7.0 .htaccess