Hostwinds 教程
寻找结果为:
目录
.htaccess文件是一个配置文件,主要由Apache Web服务器使用,以每个指导控制网站行为的各个方面。它使您可以覆盖服务器范围的设置,并将特定配置应用于单个目录,而无需直接修改主服务器配置文件。
.htaccess文件是有效管理各种后端网站任务的功能非常强大的工具。最常见的任务之一是实施重定向,其中 您可以在单个URL,整个域,甚至在HTTP协议级别上执行重定向。
在本教程中,我们将介绍无数的选项.htaccess的重定向优惠,引导您完成各种实现,以便您可以自信地有效地重定向您的URL。
启用.HTACCESS文件告诉Apache Web服务器识别并接受其中写入的指令,这将使您在目录级别覆盖默认服务器配置。
如果你有 共享主机 帐户,您的托管服务提供商应该已经启用了它,因此您要做的就是创建文件。
使用您首选的文本编辑器(我们将使用 纳米 对于此示例),使用以下命令打开网站的配置文件:
用于基于红帽的系统(Centos,Fedora,RHEL):
sudo nano /etc/httpd/conf/httpd.conf
用于基于Debian的系统(Debian,Ubuntu,Linux Mint):
sudo nano /etc/apache2/sites-available/domain_name.conf
VirtualHost文件块看起来像这样:
<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName domain_name
ServerAlias www.domain_name
DocumentRoot /var/www/domain_name/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
注意: 根据您的网站文件的组织方式 'Docuts root' 可能有所不同。有两个共同的设置:
/var/www/domain_name/
├── public_html/
│ ├── index.html
│ ├── about.html
│ └── .htaccess
└── logs/
/var/www/domain_name/
├── index.html
├── about.html
└── .htaccess
尽管两者都是有效的,但重要的是要了解您可能想或可能不希望受到.htaccess文件影响哪些站点文件。
内 VirtualHost 块添加以下目录内容块:
<VirtualHost *:80>
<Directory /var/www/domain_name/public_html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
这个指令,特别是 '全部允许'是使您可以在给定目录中所有网站文件上应用.htaccess指令的原因。
添加目录块后,保存并关闭文件。在纳米,这可以通过按下来完成 Ctrl +X, 然后 ÿ 并紧迫 进入.
为了完整启用.htaccess文件,您需要重新启动Apache:
用于基于红帽的系统(Centos,Fedora,RHEL):
sudo systemct1 restart httpd
用于基于Debian的系统(Debian,Ubuntu,Linux Mint):
sudo systemct1 restart apache2
就是这样!现在,Apache将允许您在给定目录中使用.htaccess文件。
在支持.htaccess启用的支持下,我们现在可以创建.htaccess文件。
要创建.htaccess文件,您需要转到 根目录 启用.htaccess文件的位置。使用您首选的文本编辑器(再次,我们将使用Nano)输入以下命令,替换'domain_name'带有您的域名。
注意: 消除 'public_html``如果您没有在该子目录中启用.htaccess文件。
sudo nano /var/www/html/domain_name/public_html/.htaccess
您现在已经创建了一个.htaccess文件,并且可以开始建立重定向指令。
这 '重定向'指令是简单1到1重定向的最直接选择。该指令可用于在同一域或其他域上重定向URL。以下指令将适用于任何3xx状态代码(301、302、307和308)
Redirect 301 "/original_url_path" "/new_url_path"
Redirect 301 "/orignal_url_path" "https://new_domain.com/new_url_path"
这 '重写'指令使您可以通过使用正则表达式和条件来重定向(例如模式匹配)添加其他规则。
为了使用"重写",我们需要确保启用" mod_rewrite"模块。
httpd -M | grep rewrite
apache2ctl -M | grep rewrite
如果看到以下输出,则启用了" mod_rewrite"模块
rewrite_module (shared)
第1步: 打开Apache配置文件(通常是'httpd.conf'或'apache2.conf')
sudo nano /etc/httpd/conf/httpd.conf
第2步: 确保未评论以下行(开始时没有#)。如果是,只需删除"#"
LoadModule rewrite_module modules/mod_rewrite.so
第三步: 重新启动Apache应用更改
sudo systemctl restart httpd
第1步: 启用" mod_rewrite"模块
sudo a2enmod rewrite
第2步: 重新启动Apache应用更改
sudo systemctl restart apache2
如果您在旧URL中有共同的模式,例如相同的子目录(例如 /博客),则可以使用正则表达式匹配和重定向:
RewriteEngine On
RewriteRule ^old-section/(.*)$ http://www.example.com/new-section/$1 [R=301,L]
在此示例中,任何以 '旧截面/' 将重定向到 '新段/' 带有相同的后缀。
以下指令将将所有流量从'重定向old-domain.com' 到 'new-domain.com,"保留URI路径。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^old-domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.new-domain.com/$1 [R=301,L]
当您"强制HTTPS"时,这意味着您将网站的任何传入HTTP请求重定向到有担保的HTTPS版本。
有几种方法可以使用"重写"指令强制HTTP:
当您将https强加于"所有流量"时,您告诉服务器将每个传入的HTTP请求重定向到HTTPS 子域.
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
这种强制HTTPS的方法是托管单个域的服务器的理想选择。
当您将HTTP强制在特定域上时,您告诉服务器将HTTP请求重定向到HTTPS仅针对该特定域(或子域)。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?specific-domain\.com$ [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
当在单个服务器上托管多个域时,使用此方法强迫HTTPS特别有用,并且您只需要保护选择号码即可。
您也可以将.htaccess文件与"重写"指令一起使用以重定向" www"前缀。
添加" www"前缀:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
删除" www"前缀:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
撰写者 Hostwinds Team / 六月 3, 2024