【问题标题】:.htaccess rewrite rule not working on cpanel.htaccess 重写规则在 cpanel 上不起作用
【发布时间】:2016-09-06 07:13:42
【问题描述】:

我在本地主机上创建了一个网站, 在 htdocs 中,我添加了一个文件夹“站点名称”,其中包含所有文件,包括 .htaccess。这在我的本地工作正常,但是当我将它上传到服务器上时它不起作用。

.ht访问代码

Options +FollowSymlinks
RewriteEngine on

RewriteBase /sitename/

# redirect to .php-less link if requested directly
#RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
#RewriteRule ^ /sitename/%1 [R,L,NC]

ErrorDocument 404 /sitename/404

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/sitename/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

在 cpanel 上上传时应该用什么替换“站点名称” public_html??

【问题讨论】:

  • “'sitename' 的替代品应该是什么...” - 如果站点托管在文档根目录而不是子目录中,则删除所有 /sitename 实例。另外:您应该为您在开发服务器上创建的每个站点创建单独的虚拟主机,然后在上传到您的实时站点时不需要进行任何更改。

标签: php .htaccess mod-rewrite


【解决方案1】:

如果您将脚本保存在子文件夹中(例如:/public_html/sitename/,那么下面的内容应该适合您)。但是,如果您将脚本直接保存在 /public_html/(例如:/public_html/index.php)而不是将 RewriteBase /sitename/ 替换为 RewriteBase /

Options +FollowSymlinks

<IfModule mod_rewrite.c>
    # let the PHP knows that the mod_rewrite module is ENABLED.
    SetEnv HTTP_MOD_REWRITE On
    RewriteEngine on
        RewriteBase /sitename/      
</IfModule>

#prevent direct access to certain file types
<FilesMatch "\.(htaccess|htpasswd|ini|log|sh|inc|bak|psd|DS_Store|project)$">
    Order Allow,Deny
    Deny from all
</FilesMatch>

ErrorDocument 404 /sitename/404.php

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/sitename/$1.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

如果您收到任何错误消息,请告诉我们 - 这会有所帮助。

【讨论】:

  • 我会试试这个并告诉你
  • 我的文件夹结构是这样的 /public_html/index.php
  • 在这种情况下,只需将 /sitename/ 替换为 / ...我已经在我的网络服务器上对其进行了测试,它可以正常工作。
  • 这与问题中的代码有何不同?除了错误文档上的.php,相关位看起来都一样?!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多