首页 文章

从重写规则htaccess中排除子文件夹

提问于
浏览
2

我的网站上有一个博客页面.htaccess如下所示转换SEO友好的URL

RewriteRule ^([^/.]+)/?$ /blogdetail?prmn=$1 [L]

所以,我的URL变成了 http://example.com/title-of-blog 并且它工作得很好而且很棒但是我的客户今天报告说管理部分工作不正常我检查并发现由于上述规则,URL http://example.com/admin 正在转换为 http://example.com/admin?prmn=admin .

我用Google搜索了如何从Rewrite中排除 admin 文件夹然后我得到了以下内容

RewriteRule ^admin($|/) - [L]

当我使用它然后当我键入 http://example.com/admin 然后我得到我在htaccess中定义的错误页面 .

请帮忙 . 我的完整Htaccess如下

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^admin($|/) - [L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php
RewriteRule ^index\.php$ / [L,R=301]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index
RewriteRule ^index\.php$ / [L,R=301]

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

 # remove .php from URL
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L] 

# restrict .php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /[^\ ]+\.php($|\ )
RewriteRule \.php$ / [F,L]

# remove .html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/.]+)\.html$ /$1 [L,R=301] 

RewriteRule ^([^/.]+)/?$ /blogdetail?prmn=$1 [L]

ErrorDocument 404 /error-page
ErrorDocument 403 /error-page
ErrorDocument 500 /error-page

1 回答

  • 1

    我想还有一个其他规则可以对 /admin 执行某些操作,但由于您使用的是第二个规则,因此它永远不会达到该规则 . 使用条件来排除以admin开头的任何内容 . 另请注意,该规则会将其重写为 /blogdetail?prmn=admin ,因此某些地方会被重写 .

    RewriteCond %{REQUEST_URI} !^/(admin|blogdetail)
    RewriteRule ^([^/.]+)/?$ /blogdetail?prmn=$1 [L]
    

相关问题