我搜索了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
答案 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
。确保在测试前清除缓存。