2009-10-12 71 views
0

我使用的是Wordpress,并且有以下固定链接/%category%/%postname%。 这给了我用户友好的网址,如http://www.example.com/something/需要帮助使用.htaccess重写规则

有了这个固定链接,我将无法直接访问php文件,例如http://www.example.com/something/myfile.php

我需要编写一个ReWrite规则,允许我访问/include/myfile.php。 可以帮助我吗? :)

这是我目前的.htaccess文件:

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /myblogdirectory/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /myblogdirectory/index.php [L] 
</IfModule> 
# END WordPress 

更新

好吧,我得到它的工作。

我从一开始就做错了。我正在使用“虚拟”路径而不是物理路径。

相反/mysite/includes/myfile.php的,我必须使用/wp-content/themes/mytheme/include/myfile.php

我很可能也开始加入的RewriteCond%{REQUEST_URI}!MYFILE .php,这会从重写规则中排除myfile.php。我还没有测试过。

+0

尝试使用mod_rewrite的日志记录进行一些调试(请参阅RewriteLogLevel)。 – Gumbo 2009-10-12 07:54:53

+0

完成。更新以上文本 – Steven 2009-10-12 09:51:23

+0

根据日志,'/ include'不是一个目录。或者是? – Gumbo 2009-10-12 09:58:00

回答

1

那么,你的重写规则看起来不错。

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

意味着,如果%{REQUEST_FILENAME]是一个物理文件或目录/blog/index.php将不被服务器D。

更多信息here

您确定您使用的是正确的文件路径吗?

要请求的文件应位于/blog/include/myfile.php中。

检查您的error.log apache的任何相关消息。

+0

但是不是说“这些规则的基础是/ myblogdirectory /”。如果一个whatever.php文件被请求,向/myblogdirectory/index.php发送“?(我已经更新了代码。) – Steven 2009-10-12 07:12:43

+0

PS。这是一篇关于理解WordPress的永久链接的好文章:http://www.homebizpal .COM /博客/ WordPress的/理解 - WordPress的 - 永久链接/ – Steven 2009-10-12 07:14:05