Rewrite – 嗨软 https://ihacksoft.com/archive 分享最好用的常用软件 Tue, 22 Nov 2022 02:41:09 +0000 zh-CN hourly 1 https://wordpress.org/?v=4.9.26 Apache的Rewrite原来就是这样!管它是PHPnow还是XAMPP https://ihacksoft.com/archive/1275.html https://ihacksoft.com/archive/1275.html#comments Fri, 21 Jan 2011 02:49:17 +0000 https://ihacksoft.com/?p=2004   公司有一台服务器上装的是XAMPP,没有开启Rewrite重定向功能,前天有云和的农产品网上交易市场网站要放上来,开发商那边发来了网站文件和数据库.sql文件,并标明哪个是数据库配置文件。这样我就顺利把网站搭建在了服务器上,但是我发现它有很多伪静态链接,服务器必须得支持URL Rewrite才行。我就去翻关于XAMPP开启rewrite的文章,结果找到的基本是这样的方法:

  在你的XAMPP安装目录下找到httpd.conf 这个文件( 位于\xampp\apache\conf\httpd.conf),用记事本或文本编辑器打开它
“Ctrl+F”找到“AllowOverride None”,替换为”AllowOverride All“。(总共有两个,应该是修改第一个就可以了,不过你把两个都改了也没影响),再找到”#LoadModule rewrite_module modules/mod_rewrite.so“,把前面的”#”号去掉,重启XAMPP。

  前几天还写了过PHPnow实现Discuz!伪静态URL Rewrite,其实后来通过我的测试,我已经全部搞懂了。跟PHPnow和XAMPP根本没有关系,它们只是集成包啊!关键就在Apache呀!

  上面搜索到的方法,我试了没有用。后来我知道它是针对Apache独立服务器的,而我服务器上的Apache是分虚拟主机的。Apache虚拟主机如何添加?赶快看这里:Apache添加虚拟主机。以下我以我的实例来清楚地写一下Apache虚拟主机开启Rewrite的方法:

  1、打开apache\conf\httpd.conf,添加:

<Directory "E:/Program Files/yunhe">
    Order allow,deny
    Allow from all
</Directory>

  2、打开apache\conf\extra\httpd-vhosts.conf,Apache添加虚拟主机里不是提到了添加这样一个模块嘛:

<VirtualHost *:80>
    ProxyPreserveHost On
    DocumentRoot "E:/Program Files/tuan"
    ServerName  tuan.jxbot.com
    DirectoryIndex index.php
    <Directory "E:/Program Files/tuan"> 
     Options Indexes FollowSymLinks 
     AllowOverride None 
     Order allow,deny 
     Allow from all 
 </Directory>
</VirtualHost>

原来只要把上面的AllowOverride None改成AllowOverride All就行了!!!看我的配置:

<VirtualHost *:80>
    ProxyPreserveHost On
    DocumentRoot "E:/Program Files/yunhe"
    ServerName  yunhe.jxbot.com
    DirectoryIndex index.php
    <Directory "E:/Program Files/yunhe"> 
      Options Indexes FollowSymLinks 
      AllowOverride All 
      Order allow,deny 
      Allow from all 
  </Directory>
</VirtualHost>

  3、重启Apache。不需要像上面所说的重启XAMPP,我说了Rewrite只是和Apache相关,是Apache的一个功能。看,成功了!

title
]]>
https://ihacksoft.com/archive/1275.html/feed 2
『原创亲测』PHPnow实现Discuz!伪静态URL Rewrite https://ihacksoft.com/archive/1263.html https://ihacksoft.com/archive/1263.html#comments Fri, 07 Jan 2011 09:47:28 +0000 https://ihacksoft.com/?p=1992   我电脑上的PHP环境用的是PHPnow,支持绿色软件嘛呵呵~~下午在处理Discuz!的URL Rewrite,就是伪静态嘛,你懂的。我用的是最新的Discuz!X1.5,后台的设置很简单,全局——优化设置——搜索引擎优化,由于我是在本机上做测试,我只勾选了“论坛主题列表页”和“论坛主题内容页”,这个没关系的,如下图:

Discuz!伪静态设置

  然后点击上方的“查看当前的 Rewrite 规则URL 静态化”,Discuz!已经帮你自动生成好Rewrite规则了,如下图:

Discuz!伪静态

  复制一下规则:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page\%3D$4&page=$3&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)/([a-z]+)-(.+)\.html$ $1/$2.php?rewrite=$3&%1
</IfModule>

  打开Apache的conf/httpd.conf,搜索“rewrite”,确保开启了rewrite模块,即“LoadModule rewrite_module modules/mod_rewrite.so”这一顶前面没有#号。PHPnow默认是开启的。

  找到“NameVirtualHost”,把它前面的#去掉,即开启它,写入:

NameVirtualHost 127.0.0.1:80

<VirtualHost 127.0.0.1:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot D:\Website\phpnow\htdocs
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page\%3D$4&page=$3&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^(.*)/([a-z]+)-(.+)\.html$ $1/$2.php?rewrite=$3&%1
</IfModule>   //这一段是上面从Discuz!后台复制过来的。

</VirtualHost> 

  这里一定要注意路径!!!我一开始写成了D:\Website\phpnow,害我折腾了很久,应该是D:\Website\phpnow\htdocs。最后重启一下Apache:PnCp.cmd—23,OK了,PHPnow成功实现Discuz!伪静态!

Discuz!伪静态
]]>
https://ihacksoft.com/archive/1263.html/feed 2
Apache开启Rewrite的方法 https://ihacksoft.com/archive/1192.html https://ihacksoft.com/archive/1192.html#comments Wed, 24 Mar 2010 07:57:22 +0000 https://ihacksoft.com/?p=1921 加载Rewrite模块

在conf目录下httpd.conf中找到
LoadModule rewrite_module modules/mod_rewrite.so
这句,去掉前边的注释符号“#”,或添加这句。 ]]>
加载Rewrite模块

在conf目录下httpd.conf中找到
LoadModule rewrite_module modules/mod_rewrite.so
这句,去掉前边的注释符号“#”,或添加这句。

允许在任何目录中使用“.htaccess”文件,将“AllowOverride”改成“All”(默认为“None”)

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All

注:在Windows系统下不能直接建立“.htaccess”文件,可以在命令行下使用“echo a> .htaccess”建立,然后使用记事本编辑。

]]>
https://ihacksoft.com/archive/1192.html/feed 1