CMSMS Url重写

时间:2016-11-11 09:29:35

标签: .htaccess mod-rewrite url-rewriting content-management-system cmsmadesimple

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。

我该如何处理这个问题?如果你不解读并告诉我在错误解释的情况下我做错了什么,我将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:1)

是否有名为blog的真实目录?是否禁用了索引文件/自动索引或权限不正确?