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();!
答案 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