部署服务器忽略.htaccess文件

时间:2017-06-11 17:42:34

标签: php .htaccess mod-rewrite web-deployment

root上的.htaccess文件如下所示:

RewriteEngine on
RewriteBase /
options +FollowSymLinks
RewriteRule ^en/users/profile/?$ [F,NC]
RewriteRule ^en/users/profile/?([0-9]+)?/?$ en/user/index.php?id=$1
RewriteRule ^en/users/profile/([0-9]+)/photo/? en/user/index.php?pageID=photoEdit&id=$1

RewriteCond %{HTTP_REFERER} !^http://example\.ge/?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://example\.dev/?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://localhost/?.*$ [NC]
RewriteRule \.(gif|jpe?g|png|bmp)$ - [F,NC]

它可以在本地主机上完美重新路由,但在部署服务器上会被忽略!这是 服务器的phpinfo();

这是etc文件夹: etc folder

3 个答案:

答案 0 :(得分:3)

您可能没有在服务器上启用.htaccess个文件。看看AllowOverride指令。您可以在<Directory>的文档根目录的<VirtualHost>块中添加类似的内容:

AllowOverride all

答案 1 :(得分:1)

RewriteRule ^en/users/profile/?$ [F,NC]

不是为什么忽略.htaccess文件的原因(其他答案已经为此提供了解决方案,关于检查服务器配置中的AllowOverride指令),但是你丢失了上述指令中的有效替换。对/en/users/profile/的请求不会被禁止,可能只会导致错误/ 404.

它需要像:

 RewriteRule ^en/users/profile/?$ - [F,NC]

替换只有一个连字符。)

RewriteCond %{HTTP_REFERER} !^http://example\.ge/?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://example\.dev/?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://localhost/?.*$ [NC]
RewriteRule \.(gif|jpe?g|png|bmp)$ - [F,NC]

您还应该移动&#34;热链接保护&#34;在路由指令之前的指令(上面)。否则,在热链接保护能够阻止请求之前,可以(根据URL格式)路由URL

答案 2 :(得分:0)

编辑您的虚拟主机:

1。登录您的服务器。

2。 cd / etc / apache2 / sites-available /

3. 您可以修改默认 web1 或... virtual-host- .conf -文件。输入 nano web1.conf (...)并编辑您的文件。

<VirtualHost *:80>
    ServerName yoururl.com      
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/web1/htdocs/
    <Directory /var/www/web1/htdocs/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
            Order allow,deny
            allow from all
    </Directory>
    ErrorLog /var/log/apache2/error.log
    LogLevel warn
    CustomLog /var/log/apache2/access.log combined
    ServerSignature On
</VirtualHost>

4. 停止Apache2并重启 - /etc/init.d/apache2 stop和/etc/init.d/apache2 start。

5. 将您的 .htaccess 上传到您的根目录并进行测试。

如果您使用 Cloudflare ,则 SSL设置中的设置“始终使用HTTPS ”中有一个选项。您还可以使用转发网址操作

http://yoururl.fqdn/*
redirected with a 301 response code to
https://www.yoururl.fqdn/$1