Hostwinds 教程

寻找结果为:


目录


.htaccess文件是什么?
启用.htaccess文件
步骤1:打开虚拟主机文件
步骤2:添加'wallyoverride ash ash ash of All'指令
步骤3:保存文件
步骤4:重新启动Apache
创建.htaccess文件
使用"重定向"指令重定向单个URL
如果要将一个URL重定向到同一域上的另一个URL:
如果要将URL重定向到不同域上的URL:
使用"重写"指令重定向批量URL
检查是否启用了'mod_rewrite
用于基于红帽的系统(Centos,Fedora,RHEL):
用于基于Debian的系统(Ubuntu,Debian,Linux Mint):
如何启用" mod_rewrite"
用于基于红帽的系统(Centos,Fedora,RHEL):
用于基于Debian的系统(Ubuntu,Debian,Linux Mint):
基于共同模式重定向URL
将整个域重定向到新域
用"重写"指令强制https
将HTTP迫使所有流量
将https强加在特定域上
添加和删​​除" www"前缀

如何使用.htaccess文件创建重定向

.htaccess文件是什么?
启用.htaccess文件
步骤1:打开虚拟主机文件
步骤2:添加'wallyoverride ash ash ash of All'指令
步骤3:保存文件
步骤4:重新启动Apache
创建.htaccess文件
使用"重定向"指令重定向单个URL
如果要将一个URL重定向到同一域上的另一个URL:
如果要将URL重定向到不同域上的URL:
使用"重写"指令重定向批量URL
检查是否启用了'mod_rewrite
用于基于红帽的系统(Centos,Fedora,RHEL):
用于基于Debian的系统(Ubuntu,Debian,Linux Mint):
如何启用" mod_rewrite"
用于基于红帽的系统(Centos,Fedora,RHEL):
用于基于Debian的系统(Ubuntu,Debian,Linux Mint):
基于共同模式重定向URL
将整个域重定向到新域
用"重写"指令强制https
将HTTP迫使所有流量
将https强加在特定域上
添加和删​​除" www"前缀

.htaccess文件是什么?

.htaccess文件是一个配置文件,主要由Apache Web服务器使用,以每个指导控制网站行为的各个方面。它使您可以覆盖服务器范围的设置,并将特定配置应用于单个目录,而无需直接修改主服务器配置文件。

.htaccess文件是有效管理各种后端网站任务的功能非常强大的工具。最常见的任务之一是实施重定向,其中 您可以在单个URL,整个域,甚至在HTTP协议级别上执行重定向。

在本教程中,我们将介绍无数的选项.htaccess的重定向优惠,引导您完成各种实现,以便您可以自信地有效地重定向您的URL。

启用.htaccess文件

启用.HTACCESS文件告诉Apache Web服务器识别并接受其中写入的指令,这将使您在目录级别覆盖默认服务器配置。

如果你有 共享主机 帐户,您的托管服务提供商应该已经启用了它,因此您要做的就是创建文件。

步骤1:打开虚拟主机文件

使用您首选的文本编辑器(我们将使用 纳米 对于此示例),使用以下命令打开网站的配置文件:

用于基于红帽的系统(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' (上图)表示您的网站文件在一个子目录中称为"public_html' 在'domain_name'目录,一种通常用于将面向公共文件与其他与站点相关的文件分开的结构。在此目录中启用.htaccess文件只会影响" public_html"中的文件。
  • 例:
/var/www/domain_name/
├── public_html/
│   ├── index.html
│   ├── about.html
│   └── .htaccess
└── logs/
  • '/var/www/domain_name' 表示您的所有网站文件都直接位于'domain_name' 目录。此设置意味着所有.HTACCESS文件指令将适用于此目录中的每个文件(是否面向公众)。
  • 例:
/var/www/domain_name/
├── index.html
├── about.html
└── .htaccess

尽管两者都是有效的,但重要的是要了解您可能想或可能不希望受到.htaccess文件影响哪些站点文件。

步骤2:添加'wallyoverride ash ash ash of All'指令

VirtualHost 块添加以下目录内容块:

<VirtualHost *:80>  

<Directory /var/www/domain_name/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

</VirtualHost>

这个指令,特别是 '全部允许'是使您可以在给定目录中所有网站文件上应用.htaccess指令的原因。

步骤3:保存文件

添加目录块后,保存并关闭文件。在纳米,这可以通过按下来完成 Ctrl +X, 然后 ÿ 并紧迫 进入.

步骤4:重新启动Apache

为了完整启用.htaccess文件,您需要重新启动Apache:

用于基于红帽的系统(Centos,Fedora,RHEL):

sudo systemct1 restart httpd

用于基于Debian的系统(Debian,Ubuntu,Linux Mint):

sudo systemct1 restart apache2

就是这样!现在,Apache将允许您在给定目录中使用.htaccess文件。

创建.htaccess文件

在支持.htaccess启用的支持下,我们现在可以创建.htaccess文件。

要创建.htaccess文件,您需要转到 根目录 启用.htaccess文件的位置。使用您首选的文本编辑器(再次,我们将使用Nano)输入以下命令,替换'domain_name'带有您的域名。

注意: 消除 'public_html``如果您没有在该子目录中启用.htaccess文件。

sudo nano /var/www/html/domain_name/public_html/.htaccess

您现在已经创建了一个.htaccess文件,并且可以开始建立重定向指令。

使用"重定向"指令重定向单个URL

'重定向'指令是简单1到1重定向的最直接选择。该指令可用于在同一域或其他域上重定向URL。以下指令将适用于任何3xx状态代码(301、302、307和308)

如果要将一个URL重定向到同一域上的另一个URL:

Redirect 301 "/original_url_path" "/new_url_path"

如果要将URL重定向到不同域上的URL:


Redirect 301 "/orignal_url_path" "https://new_domain.com/new_url_path"

使用"重写"指令重定向批量URL

这 '重写'指令使您可以通过使用正则表达式和条件来重定向(例如模式匹配)添加其他规则。

检查是否启用了'mod_rewrite

为了使用"重写",我们需要确保启用" mod_rewrite"模块。

用于基于红帽的系统(Centos,Fedora,RHEL):
httpd -M | grep rewrite
用于基于Debian的系统(Ubuntu,Debian,Linux Mint):
apache2ctl -M | grep rewrite

如果看到以下输出,则启用了" mod_rewrite"模块

rewrite_module (shared)

如何启用" mod_rewrite"

用于基于红帽的系统(Centos,Fedora,RHEL):

第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
用于基于Debian的系统(Ubuntu,Debian,Linux Mint):

第1步: 启用" mod_rewrite"模块

sudo a2enmod rewrite

第2步: 重新启动Apache应用更改

sudo systemctl restart apache2

基于共同模式重定向URL

如果您在旧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

当您"强制HTTPS"时,这意味着您将网站的任何传入HTTP请求重定向到有担保的HTTPS版本。

有几种方法可以使用"重写"指令强制HTTP:

将HTTP迫使所有流量

当您将https强加于"所有流量"时,您告诉服务器将每个传入的HTTP请求重定向到HTTPS 子域.

RewriteEngine On

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

这种强制HTTPS的方法是托管单个域的服务器的理想选择。

将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特别有用,并且您只需要保护选择号码即可。

添加和删​​除" www"前缀

您也可以将.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