【问题标题】:HTACCESS Conditions and/or Rewrites are NOT workingHTACCESS 条件和/或重写不起作用
【发布时间】:2016-08-04 10:30:52
【问题描述】:

我的根 .htaccess 文件有问题。

这是我的 .htaccess 文件:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /

# START
RewriteRule ^$ index.php [QSA,L]

# PAGE
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{HTTP_HOST} !category
RewriteRule ^([A-Za-z0-9_-]+)/?$ index.php?page=$1 [QSA,L]

# POST
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{HTTP_HOST} !category
RewriteRule ^([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/?$ index.php?page=$1&post=$2 [QSA,L]

# CATEGORY
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{HTTP_HOST} category
RewriteRule ^category$ category.php [QSA,L]

# SINGLE CATEGORY
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^category/([A-Za-z0-9_-]+)/?$ category.php?category=$1 [QSA,L]

# XML SITEMAP
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^sitemap\.xml$ sitemap.php [L]
</IfModule>

当我尝试去

www.pixel-factory.at/category

结果我得到一个空的“页面”。这意味着它去

www.pixel-factory.at/index.php?page=category

(不存在)而不是去

www.pixel-factory.at/category.php

请人帮忙,无法完成。谢谢!

【问题讨论】:

    标签: apache .htaccess mod-rewrite


    【解决方案1】:

    您可以重构您的条件以缩短您的代码,在任何地方删除 RewriteCond %{HTTP_HOST} category 条件并重新排序您的规则以最终保留通用规则:

    DirectoryIndex index.php
    RewriteEngine on
    RewriteBase /
    
    # XML SITEMAP
    RewriteRule ^sitemap\.xml$ sitemap.php [L]
    
    # skip all rules from existing files or directories
    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ - [L]
    
    # CATEGORY
    RewriteRule ^category/?$ category.php [NC,L]
    
    # SINGLE CATEGORY
    RewriteRule ^category/([\w-]+)/?$ category.php?category=$1 [NC,QSA,L]
    
    # search term
    RewriteRule ^search/([\w-]+)/?$ search.php?search=$1 [NC,QSA,L]
    
    # PAGE
    RewriteRule ^([\w-]+)/?$ index.php?page=$1 [QSA,L]
    
    # POST
    RewriteRule ^([\w-]+)/([\w-]+)/?$ index.php?page=$1&post=$2 [QSA,L]
    

    【讨论】:

    • 谢谢,我试试看!这个(\w+) 代表什么?
    • \w[a-zA-Z0-9_] 相同
    • 但我还需要连字符?为什么我必须在 Category Rewrites 上使用 NC 标志?
    • 现在我遇到的问题是我的网站加载速度非常慢,而且任何东西都可以正常工作了。
    • 这个没有任何作用。当我转到/category 时,我得到了无尽的加载页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    相关资源
    最近更新 更多