LE:弄清楚我的解释技巧非常糟糕,所以我会尽快接受tl; dr。最后。
我最近收到的一个项目暗示了在CMSMS(CMS Made Simple)上构建网站的定制。网站版本 1.11.2 ,我正在使用Apache和mod_rewrite来处理url重写。 我一直试图解决一个与URL Rewrite相关的小事,但我根本无法解决它。
该网站已经为博客CGBlog安装了一个模块。 为了显示博客的内容,我需要一个页面(以及页面的模板,但我们会将模板保留在讨论之外,因为这不是问题中的交易)在哪里泄漏所有帖子。基本上,一般类别/存档页面。 因此,我创建了一个名为“Blog”的页面,其URL为“blog”。 到目前为止,不考虑博客,我们会有像example.com/blog。
博客可以选择在每个帖子之前添加前缀。所以我可以制作像example.com/any_prefix_here/title-of-post这样的东西。此外,当在博客文章中时,它不会记录如何调用存档/类别页面。 所以我一直在使用这个前缀选项让网址看起来一样。例如:example.com/blog,当文章内容为example.com/blog(添加为前缀)/ post-of-the-post 时。
现在,问题是如果我试图保留名为“blog”的博客页面的名称,我无法以example.com/blog的身份访问它,否则我将禁止403。如果我通过example.com/anything/blog访问它,它将工作。如果我将页面命名为blog2,那么我可以将其作为example.com/blog2访问。我无法弄清楚与'博客'有什么关系,就像这个词一样。此外,我无法弄清楚如何绕过403禁止。
我甚至试图通过.htaccess以某种方式重写它,但没有成功。
这是我目前的htaccess。
# Attempt to override some php settings, these settings may be helpful on some hosts if your
# default configuration does not meet CMS's minimum requirements, and your host
# has given your account appropriate permissions
#php_value upload_max_filesize "10M"
#php_value session_save_path "tmp/cache"
#php_flag magic_quotes_gpc Off
#php_flag register_globals Off
#php_flag session.use_trans_sid Off
# (this is important, so uncomment if your host permit)
Options -Indexes
ServerSignature Off
Options +FollowSymLinks
# To prevent E_STRICT problems with PHP 5.3+ you can uncomment the following lines
# Note: These settings should only be enabled for production sites!
#php_flag display_startup_errors 0
#php_flag display_errors 0
#php_flag html_errors 0
#php_value docref_root 0
#php_value docref_ext 0
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# redirects /index.php?page=asfd to /asdf
RewriteCond %{THE_REQUEST} /index\.php\?page=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=302,L,NE]
# redirects /index.php/asfd to /asdf
RewriteCond %{THE_REQUEST} /index\.php/([^?\s]+)\s [NC]
RewriteRule ^ /%1 [R=302,L,NE]
RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteRule ^(.*)index.php$ /$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [QSA,L]
RewriteCond %{HTTP_HOST} ^connsys.ro
RewriteRule (.*) http://www.connsys.ro/$1 [R=301,L]
</IfModule>
<IfModule mod_header.c>
# Disable ETags
Header unset ETag
FileEtag None
</IfModule>
<IfModule mod_deflate.c>
# Compress css, plaintext, xml, gif, and images in transport.
AddOutputFilterByType DEFLATE text/css text/plain text/xml image/gif image/jpeg image/png
</IfModule>
<IfModule mod_expires.c>
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
# Set expires tags on various files... so that the browser wont attempt to reload them.
ExpiresActive On
ExpiresDefault "access plus 1 year"
<IfModule mod_header.c>
# Setting cache control to public allowes proxy servers to cache the items too.
Header set Cache-Control "public"
</IfModule>
</FilesMatch>
</IfModule>
# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
# Or, compress certain file types by extension:
<files *.html>
SetOutputFilter DEFLATE
</files>
<IfModule mod_headers.c>
# WEEK
<FilesMatch "\.(jpg|jpeg|png|gif|swf|woff)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
</IfModule>
Tl; dr:url将问题/权限问题重写到博客页面。 Page被称为'Blog',slug / url是'blog'。我无法访问blog作为example.com/blog,因为我禁止403。如果我以example.com/anything/blog访问博客,它就有效。如果我将页面重命名为blog2,则其作为example.com/blog2。
我该如何处理这个问题?如果你不解读并告诉我在错误解释的情况下我做错了什么,我将不胜感激。
谢谢
答案 0 :(得分:1)
是否有名为blog
的真实目录?是否禁用了索引文件/自动索引或权限不正确?