“rewrite” 标签页面:
-
StatusNet在Nginx下的rewrite规则
StatusNet在Nginx下的rewrite规则。假设StatusNet装在abc.creke.net的sn目录下,访问地址为abc.creke.net/sn/,则其在Nginx下的rewrite规则如下:
#StatusNet
location /sn
{
try_files $uri $uri/ @statusnet;
}
location @statusnet
{
rewrite ^/sn/(.*)$ /sn/index.php?p=$1 last;
}将其放在“server{}”块中靠前位置即可。
如果不启用fancy url,这时会发现登录页面404,因为类似“abc.creke.net/sn/index.php/main/login”这类地址nginx不认为是需要交到php处理的地址。这时有两种解决方法。
第一种,最简单的就是在config.php中加上开启fancy url的语句,同时按照上面说的配好rewrite:
$config['site']['fancy'] = true;
第二种,就是将上面的rewrite中的rewrite规则换成:
rewrite ^/sn/index\.php\(.*)$ /sn/index.php?p=$1 last;
好吧,除了我,谁那么无聊用第二种啊……用第一种呗。
-
Blogger转移到Wordpress的rewrite跳转规则
Blogger转移到Wordpress的.htaccess的rewrite跳转规则。
这是很久之前写的,一直没有整理出来。刚好今天博客搬家,整理一下发上来。
这份代码可以吧blogger的相同月份的文章转移到wordpress对应的月份归档里,当然,无论如何是不能从blogger的具体文章跳转到wordpress的对应文章的,这是是最精确、最有利于SEO的做法。
以下是.htaccess的rewrite代码:
#BEGIN old blog
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#post
RewriteRule ^([0-9]{4})/([0-9]{2})/[A-Za-z0-9_-]+\.html$ /date/$1/$2 [R=301,L]
#archive
RewriteRule ^([0-9]{4})_([0-9]{2})_01_archive\.html$ /date/$1/$2 [R=301,L]
</IfModule>
#END old blog -
StatusNet在IIS下的Rewrite规则
StatusNet在IIS下的Rewrite规则,其实跟WordPress的大致相同,大家也可以在IIS下转换.htaccess。不过这个StatusNet在IIS下有个问题,就是不能使用API。
Rewrite规则如下:
<configuration> <system.webServer> <rewrite> <rules> <rule name="StatusNet" patternSyntax="Wildcard"> <match url="*" /> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="index.php?p={R:1}" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
-
Dabr在IIS7下的rewrite规则
Dabr在IIS7的rewrite规则如下:
<configuration> <system.webServer> <rewrite> <rules> <rule name="Dabr"> <match url="Dabr目录/(.*)" /> <conditions> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> <action type="Rewrite" url="Dabr目录/index.php?q={R:1}" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
上面的“Dabr目录”请按需更改。如果装在根目录,则把“Dabr目录/”,包括后面的“/”也去掉即可。
把上面内容保存为web.config保存至网站根目录即可。
-
IIS7依靠域名判断重定向的Rewrite规则
IIS7依靠域名判断重定向的Rewrite规则
下面贴一下Rewrite规则,作用是把所有非“blog.creke.net”的内容都301重定向到“blog.creke.net”:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect Domain" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^blog\.creke\.net$" negate="true"/>
</conditions>
<action type="Redirect" url="http://blog.creke.net/{R:0}" redirectType="Permanent"/>
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>其实和.htaccess差不多,只不过IIS的配置是xml语法。
-
使用.htaccess判断蜘蛛及对域名进行重定向
写了一段代码,首先判断是不是当前所用域名,然后判断是否是蜘蛛,如果两者同时成立,则转到统一的域名下。这个转向主要通过Rewrite来实现,说实话,ReWrite的功能很强大。
.htaccess代码如下:
#BEGIN Redirect all the URL to the specific domain fot bots <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !^blog.creke.net [NC] RewriteCond %{HTTP_USER_AGENT} (baiduspider|googlebot|soso|bing|sogou|yahoo|sohu-search|yodao|robozilla|msnbot) [NC] RewriteRule ^(.*)$ http://blog.creke.net/$1 [R=301,L] </IfModule> #END第一个RewriteCond的意思是,如果当前域名不是blog.creke.net,[NC]即不分大小写;第二个RewriteCond的意思是,通过判断Useragent来检测当前请求网页的是不是网络蜘蛛,用“|”代表或逻辑来匹配列表中每一个蜘蛛的Useragent的关键字,如果匹配,则当前请求者为网络蜘蛛。如果两个重写条件同时成立,则301重定向到当前域名的对应网页。
-
Wordpress与Discuz的Rewrite共存(方法二)
WP装在/blog文件夹,DZ装在/bbs文件夹。重写成功。这是规则,放在站点根目录下.htaccess即可。#这是正确的 wordpress+discuz 共生.htaccess<IfModule mod_rewrite.c>RewriteEngine On#即使DZ装在/bbs目录,还是这么写RewriteBase:
RewriteBase /RewriteRule ^bbs/archiver/((fid|tid)-[\w\-]+\.html)$ bbs/archiver/index.php?$1RewriteRule ^bbs/forum-([0-9]+)-([0-9]+)\.html$ bbs/forumdisplay.php?fid=$1&page=$2RewriteRule ^bbs/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ bbs/viewthread.php?tid=$1&extra=page\%3D$3&page=$2RewriteRule ^bbs/space-(username|uid)-(.+)\.html$ bbs/space.php?$1=$2RewriteRule ^bbs/tag-(.+)\.html$ bbs/tag.php?name=$1</IfModule># BEGIN WordPress<IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-d#下面如果是WP装在根目录就是RewriteRule . /index.php [L]
RewriteRule . /blog/index.php [L]</IfModule># END WordPress这个方法可行,但还是推荐这种方法:http://blog.creke.net/2009/08/wordpressdiscuzrewrite.html。因为它更便于管理 -
wordpress与discuz的Rewrite共存
自从使用了CPH的LAMP服务器之后,我就开始在上面试验一些php+mysql应用,其中首先弄的就是discuz了。
安装了discuz6.0.0之后,基本上运行正常,但是一个最重要的功能urlrewrite一直搞不定,直到今天在本地弄xampp才无意之中发现了问题所在。
和wordpress不一样,当你在discuz后台选择使用url静态化之后,并不会自动生成相应的.htaccess文件,而是指导你”相应规则请参考《用户使用说明书》的高级使用部分”。
google一下知道这个Discuz! 用户使用说明书,然后找到高级应用里面的url静态化:http://www.discuz.net/usersguide/advanced_urlrewrite.htm按照discuz所说的,对于Apache Web Server(虚拟主机用户),应该进行如下操作:
检查论坛所在目录中是否存在 .htaccess 文件,如果不存在,请手工建立此文件。Win32 系统下,无法直接建立 .htaccess 文件,您可以从其他系统中拷贝一份,或者在 Discuz.net 技术支持栏目中下载此文件。编辑并修改 .htaccess 文件,添加以下内容
# 将 RewriteEngine 模式打开
RewriteEngine On
# 修改以下语句中的 /discuz 为你的论坛目录地址,如果程序放在根目录中,请将 /discuz 修改为 /
RewriteBase /discuz
# Rewrite 系统规则请勿修改
RewriteRule ^archiver/((fid|tid)-[w-]+.html)$ archiver/index.php?$1
RewriteRule ^forum-([0-9]+)-([0-9]+).html$ forumdisplay.php?fid=$1&page=$2
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+).html$ viewthread.php?tid=$1&extra=page%3D$3&page=$2
RewriteRule ^space-(username|uid)-(.+).html$ space.php?$1=$2
RewriteRule ^tag-(.+).html$ tag.php?name=$1添加内容时,请遵照上面的提示,修改论坛所在的路径,然后保存。将 .htaccess 文件上传到论坛所在的目录中。然后进入论坛系统设置的搜索引擎优化,根据需要开启 URL 静态化功能。
我这样做了之后不但没有效果,而且连论坛都访问不了,提示HTTP500错误。
今天在本地安装了xampp之后,装了discuz,重新按照上面的方法测试,还是不行,然后又安装了wordpress并成功使用了urlrewrite。
打开wordpress自动生成的.htaccess文件和discuz的来比较,终于看出来问题:# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>
# END WordPress很明显,discuz官方的资料少了两行:
<IfModule mod_rewrite.c>
</IfModule>按照wordpress的加上去,在本地和CPH服务器上都成功了。
我对.htaccess文件不是很懂,完全是自己尝试出来的,补充几点:
首先是<IfModule mod_rewrite.c></IfModule>不能少,这大概是判断mod_rewrite是否存在的。
其次是RewriteEngine On这个应该是Rewrite引擎打开,也不能少。
然后是RewriteBase /这个很重要,如果安装在根目录就保持这样,如果不是,就要把/替换成所在的目录,相对于web根目录。
例如你把discuz安装在http://127.0.0.1/bbs,那么就要写成RewriteBase /bbs/才可以,这样也方便了多个rewrite共存。
最后是.htaccess文件的位置,如果你的根目录下有bbs和wordpress两个目录对应http://127.0.0.1/bbs和http://127.0.0.1/wordpress,那么可以分别创建两个.htaccess文件放在这两个目录里。
例如我是这样的:<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule><IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /bbs/
RewriteRule ^archiver/((fid|tid)-[w-]+.html)$ archiver/index.php?$1
RewriteRule ^forum-([0-9]+)-([0-9]+).html$ forumdisplay.php?fid=$1&page=$2
RewriteRule ^thread-([0-9]+)-([0-9]+)-([0-9]+).html$ viewthread.php?tid=$1&extra=page%3D$3&page=$2
RewriteRule ^space-(username|uid)-(.+).html$ space.php?$1=$2
RewriteRule ^tag-(.+).html$ tag.php?name=$1
</IfModule>注意加粗部分哦。
-
Apache服务器支持.htaccess和rewrite和virtualhost
Apache服务器支持.htaccess和rewrite和virtualhost最近想升级维护Creke ACG,但是以前自己配置的AMP有些功能不支持,所以要自己动手让他支持。支持.htaccess
如何让自己的本地APACHE服务器支持".htaccess"呢?其实只要简单修改一下apache的httpd.conf设置就可以让APACHE支持.htaccess了,来看看操作
打开httpd.conf文件(在那里? APACHE目录的CONF目录里面),用文本编辑器打开后,查找
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>改为
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>就可以了
支持rewrite:
LoadModule rewrite_module modules/mod_rewrite.so支持virtualhost:
在文件末尾加上
include "conf/vhost.conf"
然后在httpd.conf新建一个vhost.conf文件。在该配置文件写上虚拟主机的配置就行。
#NameVirtualHost *:80
#
# NOTE: NameVirtualHost cannot be used without a port specifier
# (e.g. :80) if mod_ssl is being used, due to the nature of the
# SSL protocol.
##
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
#<VirtualHost *:80>
# ServerAdmin webmaster@dummy-host.example.com
# DocumentRoot /www/docs/dummy-host.example.com
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
#/VirtualHost>
比如我,就是:NameVirtualHost *
<VirtualHost *> #默认情况
DocumentRoot "w:/www"
</VirtualHost><VirtualHost *> #Creke ACG站点
DocumentRoot "w:/www/creke_acg"
ServerName acg.creke.net
</VirtualHost>虽然说的是“NOTE: NameVirtualHost cannot be used without a port specifier”,但我仍然这样子配
置成功没有报错,也没有警告。而且可以继续使用80和21500两个端口来访问网站。看来有空要研究一下
http://httpd.apache.org/docs/2.2/vhosts/,看看是否新版本中有和旧版本不同的说明了。
这样,再把本地的host文件暂时添加acg.creke.net为127.0.0.1,就可以在本地调试升级Creke ACG了。
时间脚印
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
|---|---|---|---|---|---|---|
| « 三 | ||||||
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 | 31 | ||
最新文章
- ffmpeg/ffprobe查看音频视频文件信息并输出为json格式
- ffmpeg将音频或视频编码为AMR格式音频
- CentOS编译安装ffmpeg以及相关编码解码器
- CentOS编译安装新版gnutls
- MingW通过mingw-get的package管理切换回gcc 4.5.2
最近评论
- Bobhu 在 ffmpeg/ffprobe查看音频视频文件信息并输出为json格式 上的评论
- ApkTool反编译和重新打包 - iew3c 在 Android中Java编写的APK使用apktool反编译并修改smali 上的评论
- zaykl 在 为nginx配置https并自签名证书 上的评论
- cubieboard试用手记 | 斯巴达第二季 在 为nginx配置https并自签名证书 上的评论
- 给猫 在 一年的感动,终于终结――《Clannad Afterstory》完结纪念 上的评论