1

我的 .htaccess 文件中有以下规则

RewriteEngine On
#1. home page redirection
RewriteRule ^$ php/home.php [QSA,L]                                        

#2. Detect Non valid files (for menus)
RewriteCond %{REQUEST_FILENAME} !-f

#3. append php/query.php                                                   
RewriteRule ^(.*)$ php/$1.php [QSA,L]         

更新:问题是我在 wp 目录中没有 .htaccess 。

这工作正常,但我最近在我的网站的一个名为 wp 的子文件夹中安装了 wordpress。在我的 blog.php 中列出 wordpress 帖子效果很好。

用户通过这个 url 访问博客网页http://mysite/blog 然后rule #2被执行。

问题是在访问 wordpress 文章和管理门户时也会触发规则 #2 和 #3。在这种情况下如何防止这种情况发生,我需要访问以下 URL。

内部服务器错误

http://mysite/wp/wp-admin

内部服务器错误

http://mysite/wp/some-article

文件夹结构

|-mysite
  |- css
  |- .htaccess
  |- wordpress
    |- wp
    |- wp-admin
  |- php
    |- index.php
    |- blog.php
  |- js

非常感谢任何帮助/建议。

谢谢

更新:现在一切正常 - 这是我的 .htaccess 文件

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ php/home.php [QSA,L]                                                                                                                 
#WP articles
RewriteRule ^blog/([A-Za-z0-9-]+)/?$ wp/$1 [QSA,L]

#WP archives                     
RewriteRule ^blog/([0-9]{4}/[0-9]{2})/?$ wp/$1 [QSA,L]

#WP search                                       
RewriteCond %{QUERY_STRING} ^s=(.*)$
RewriteRule . wp/$/%1? [QSA,L]

#WP categories                
RewriteRule ^blog/category/([A-Za-z0-9-]+)/?$ wp/$1 [QSA,L]

#WP tags
RewriteRule ^blog/tag/([A-Za-z0-9-]+)/?$ wp/$1 [QSA,L]

#WP authors
#Insert authors redirect

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ php/$1.php [QSA,L]
</IfModule>

我在访问我的博客页面时也遇到了 404 错误 - 这是由包含 wp-blog-header.php 文件引起的,解决方案是在我的 blog.php 中插入以下代码并删除 include('wp/wp-blog-header.php)

<?php
   require('./wp-config.php');
   $wp->init();
   $wp->parse_request();
   $wp->query_posts();
   $wp->register_globals();
?>
4

1 回答 1

1

首先,#2 不是规则,它是执行以下规则(#3)的条件。

要解决您的问题,有多种解决方案,例如,您可以添加一个条件以不重定向任何以 wp/ 开头的内容:

RewriteEngine On

RewriteRule ^$ php/home.php [QSA,L]                                        

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/?wp/
RewriteRule ^(.*)$ php/$1.php [QSA,L]
于 2012-08-30T15:10:13.950 回答