首页 > CMS > Wordpress > 正文

WordPress伪静态大全

2024-09-07 00:52:26
字体:
来源:转载
供稿:网友

IIS6/IIS7.5/Apache/Nginx/win2003/win2008四种环境下的伪静态规则,希望对大家有所帮助。其中IIS7.5的规则是目前最完美的。

明明是六种为什么要说是四种呢?其实windows的主机在2003时为IIS6,而2008以后升级为了IIS7.5 所以IIS6的规则在IIS7.5不通用哦。

检测主机是否支持伪静态的方法:在WP后台 > 设置 > 固定链接,设置为 非默认带的那种结构,然后访问任何一篇文章,如果出现 404 错误,说明你的主机当前不支持 WordPress 伪静态。

IIS7.5完美伪静态规则

IIS 环境是 Windows 主机常用的服务器环境,但网上很多规则其实并不完美,很多地方依旧有些无法设置的地方,但这个却可以,新建两个 txt 文件,将下面的代码分别添加到文件中:

第一个 web.config

  1. <configuration> 
  2.  
  3. <system.webServer> 
  4.  
  5. <rewrite> 
  6.  
  7. <rules> 
  8.  
  9. <rule name="ChineseURL" stopProcessing="true"
  10.  
  11. <match url="^(tag|category)/(.*)$" /> 
  12.  
  13. <action type="Rewrite" url="ihuanurl.php"/> 
  14.  
  15. </rule> 
  16.  
  17. <rule name="wordpress" patternSyntax="Wildcard"
  18.  
  19. <match url="*" /> 
  20.  
  21. <conditions> 
  22.  
  23. <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
  24.  
  25. <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
  26.  
  27. </conditions> 
  28.  
  29. <action type="Rewrite" url="index.php" /> 
  30.  
  31. </rule> 
  32.  
  33. </rules> 
  34.  
  35. </rewrite> 
  36.  
  37. </system.webServer> 
  38.  
  39. </configuration> 

第二个辅助文件 ihuanurl.php:

  1. <?php 
  2.  
  3. // IIS Mod-Rewrite 
  4.  
  5. if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) { 
  6.  
  7. $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL']; 
  8.  
  9.  
  10. // IIS Isapi_Rewrite 
  11.  
  12. else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { 
  13.  
  14. $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL']; 
  15.  
  16.  
  17. else 
  18.  
  19.  
  20. // Use ORIG_PATH_INFO if there is no PATH_INFO 
  21.  
  22. if ( !isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO']) ) 
  23.  
  24. $_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO']; 
  25.  
  26. // Some IIS PHP configurations puts the script-name in the path-info (No need to append it twice) 
  27.  
  28. if ( isset($_SERVER['PATH_INFO']) ) { 
  29.  
  30. if ( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] ) 
  31.  
  32. $_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO']; 
  33.  
  34. else 
  35.  
  36. $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO']; 
  37.  
  38.  
  39. // Append the query string if it exists and isn't null 
  40.  
  41. if (isset($_SERVER['QUERY_STRING']) && !emptyempty($_SERVER['QUERY_STRING'])) { 
  42.  
  43. $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING']; 
  44. //Vevb.com 
  45.  
  46.  
  47. require("index.php"); 
  48.  
  49. ?> 

然后保存文件,上传到WordPress站点的根目录即可。

IIS6伪静态规则

IIS 环境是 Windows 主机常用的服务器环境,新建一个 txt 文件,将下面的代码添加到文件中:

  1. [ISAPI_Rewrite] 
  2.  
  3. # Defend your computer from some worm attacks 
  4.  
  5. #RewriteRule .*(?:global.asa|default/.ida|root/.exe|/./.).* . [F,I,O] 
  6.  
  7. # 3600 = 1 hour 
  8.  
  9. CacheClockRate 3600 
  10.  
  11. RepeatLimit 32 
  12.  
  13. # Protect httpd.ini and httpd.parse.errors files 
  14.  
  15. # from accessing through HTTP 
  16.  
  17. # Rules to ensure that normal content gets through 
  18.  
  19. RewriteRule /tag/(.*) /index/.php/?tag=$1 
  20.  
  21. RewriteRule /software-files/(.*) /software-files/$1 [L] 
  22.  
  23. RewriteRule /images/(.*) /images/$1 [L] 
  24.  
  25. RewriteRule /sitemap.xml /sitemap.xml [L] 
  26.  
  27. RewriteRule /favicon.ico /favicon.ico [L] 
  28.  
  29. # For file-based wordpress content (i.e. theme), admin, etc. 
  30.  
  31. RewriteRule /wp-(.*) /wp-$1 [L] 
  32.  
  33. # For normal wordpress content, via index.php 
  34.  
  35. RewriteRule ^/$ /index.php [L] 
  36.  
  37. RewriteRule /(.*) /index.php/$1 [L] 

然后另存为 httpd.ini 文件,上传到WordPress站点的根目录即可。

Apache伪静态规则

Apache是 Linux 主机下常见的环境,现在一般的 Linux 虚拟主机都采用这种环境。新建一个 htaccess.txt 文件,添加下面的代码:

  1. <IfModule mod_rewrite.c> 
  2.  
  3. RewriteEngine On 
  4.  
  5. RewriteBase / 
  6.  
  7. RewriteRule ^index/.php$ - [L] 
  8.  
  9. RewriteCond %{REQUEST_FILENAME} !-f 
  10.  
  11. RewriteCond %{REQUEST_FILENAME} !-d 
  12.  
  13. RewriteRule . /index.php [L] 
  14.  
  15. </IfModule> 

然后上传到 WordPress 站点的根目录,重命名为 .htaccess 即可(在win下是不可能这样命名的)

Nginx伪静态规则

Nginx环境一般是Linux 主机 VPS或服务器用户用的比较多,这些用户一般都会自己配置Nginx,或者有专门的人帮你配置,打开 nginx.conf 或者某个站点的配置环境,比如 wpdaxue.com.conf(不同人配置的不一样),在  server   { } 大括号里面添加下面的代码:

  1. location / { 
  2.  
  3. if (-f $request_filename/index.html){ 
  4.  
  5.                 rewrite (.*) $1/index.html break
  6.  
  7.         } 
  8.  
  9. if (-f $request_filename/index.php){ 
  10.  
  11.                 rewrite (.*) $1/index.php; 
  12.  
  13.         } 
  14.  
  15. if (!-f $request_filename){ 
  16.  
  17.                 rewrite (.*) /index.php; 
  18.  
  19.         } 
  20.  

保存,重启 Nginx 即可。

最后来个结尾:你们会问我我为什么知道IIS7.5的规则,其实以前我就是用的win2008的机子,但是用来做博客的话,win主机真的不大适合,绝大部分运营商都会禁止smtp的,而且win主机运行php实在是太慢了,推荐在win的主机上安装阿帕奇之后再用。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表