RewriteCond无法正常工作 - 从网址中删除博客

时间:2017-01-11 11:01:06

标签: php apache .htaccess mod-rewrite

我搜索了15个stackoverflow问题和搜索/阅读Phile文档,我不知道为什么我遇到了问题。我正在使用Phile,我有一个/ blog-folder /我的所有帖子都会去。我正在尝试从帖子URL中删除/ blog-folder / - 现在它们是example.com/blog-folder/post,我只想要example.com/post。

这是我当前没有缓存内容的.htaccess

#####################################
# Redirect stuff
#####################################
<IfModule mod_rewrite.c>
    # Enable URL rewriting
    RewriteEngine On

RewriteCond %{HTTP_HOST} ^domain.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301,NC]

# RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule .* index.php [L]

   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule ^(.*)/?$ /blog-folder/$1 [NC,L]
</IfModule>
#####################################
# disable dir
#####################################
Options -Indexes

3 个答案:

答案 0 :(得分:1)

我认为您在使用相同条件进行多重规则时存在问题。

尝试这样我假设所有内容都由位于blog-folder中的index.php文件处理。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)/?$ blog-folder/index.php [NC,L]

现在通过example.com/post访问它,它将被重写为处理请求的index.php。

答案 1 :(得分:0)

比你预期的更容易,只需按照这个

RewriteEngine On

RewriteCond %{REQUEST_FILENAME}.php -f [NC] 
RewriteRule ^(.*?)$ $1.php [L]

RewriteCond %{REQUEST_FILENAME}.html -f [NC] 
RewriteRule ^(.*?)/?$ $1.html [L]

RewriteCond %{REQUEST_FILENAME}.blog-f [NC] 
RewriteRule ^(.*?)/?$ $1.blog[L]

答案 2 :(得分:0)

尝试使用:

RewriteEngine On
RewriteRule ^blog-folder/(.*)$ /$1 [L,R=301]

应该留下您的网址:example.com/post。确保在测试前清除缓存。