有关创建重写规则的注意事项

2020年12月29日15:58:50 发表评论 39 次浏览

请注意

此页面上的文本已由翻译软件翻译。我们的编辑人员的修订版本即将推出。

对于Linux Web Hosting软件包和受管专用服务器

我们向你显示哪些错误源可以检查重写规则是否无法正常工作。

你可以使用重写规则在a.htaccess文件中重命名和重定向页面。例如, 重命名网页的URL以进行搜索引擎优化(SEO)或重定向呼叫以实现不同的目的。

请注意:重写规则在服务器上的a.htaccess文件中定义。我们将在帮助文章中说明如何创建a.htaccess文件在Windows下创建带前缀点的文件。请确保你通过发送的文件Webspace资源管理器or的FTP到你的网站空间, 实际上称为.htaccess.

mod_rewrite和RewriteEngine的激活

在Web Hosting服务器上, Apache模块mod_rewrite默认情况下已处于活动状态。为了使你的重写规则生效, 请打开所谓的改写引擎。为此, 请在your.htaccess的开头输入以下命令:

RewriteEngine On

RewriteBase参数和目录规范

激活后重写引擎, 所谓的RewriteBase还必须在.htaccess的开头指定:

RewriteBase /

使用RewriteBase, 你可以定义RewriteRule应该从哪个目录访问。如果RewriteBase被指定为/如上所述, 输出路径是要重定向的域链接到的目录。你可以在域中心的notlogy中找到域当前链接到的目录(域>管理域)。

RewriteBase和RewriteRule在同一目录中

如果要使创建的RewriteRule在定义了RewriteBase的同一目录中生效, 请不要在RewriteRule中指定任何其他目录路径。使用以下命令指定文件就足够了/.

RewriteEngine On
RewriteBase /
RewriteRule ^([a-z]+)\.html$ /index.php?$1 [R, L]

不同目录中的RewriteBase和RewriteRule

如果RewriteRule在除RewriteBase指定的目录之外的其他目录中生效, 则必须使用目录路径的相应规范进行定义。

示例RewriteRule, 它应在与RewriteBase指定的目录不同的目录中工作。

以下RewriteRule指定该文件index.html应该从/测试每次调用不存在的HTML页面时都在目录中。

RewriteEngine on
RewriteBase /
RewriteRule ^(.*)\.html$ test/index.html

如果域已经连接到目录/测试通过notlogy, 目录的规范/测试由于已经通过RewriteBase中的规范进行了定义, 因此不再需要在RewriteRule中使用它。

避免错误的提示

请注意:重写规则可能非常复杂, 即使有最小的不整洁度, 也可能导致500错误。此类错误可能是由于错误输入了一个字符而导致的。这不是服务器故障。通常, 一旦.htaccess中的相应行被注释掉, 该网站就会正常运行。

这里我们列出最常见的错误原因即使重写规则不会产生错误500, 也可以确保该规则不生效。

  • 确保将.htaccess放置在正确的目录中。请注意, an.htaccess是递归的。因此, 它会影响文件的保存目录及其各自的子目录。

  • 避免在路径级别上使用多个nested.htaccess文件。在某些情况下, 子目录的.htaccess中的错误也会对较高目录级别的更高级别重写规则产生负面影响。

  • 因此, 最好为每个域或Web站点创建一个单独的目录。这使你可以方便地定义单独的.htaccess文件, 并为每个域互不干扰的重写规则。

  • 你是否已使用notlogy在同一目录中创建了受保护的目录?此函数将覆盖自己创建的.htaccess文件, 从而使你的重写规则无效。我们的建议:使用帮助文章, 在your.htaccess中自己创建目录保护使用.htaccess和FTP设置目录保护.

  • 检查功能是否被注释掉(禁用)。一些预构建的脚本和内容管理系统(CMS)(例如Joomla)会注释掉重写规则, 以避免在安装过程中出现问题。在a.htaccess中, 通过在行前面加一个哈希将命令注释掉(#):

# Beispiel für Rewrite-Rule:
# (macht aus http://domain.de/xyz.html ein http://domain.de/index.php?xyz
#
RewriteEngine on
RewriteBase /
# RewriteRule ^([a-z]+)\.html$ /index.php?$1 [R, L]

在此示例中, 实际的RewriteRule已被注释掉, 因此不适用。删除哈希之前重写规则并在服务器上保存modified.htaccess。

  • 检查是否已将所需的文件权限(chmod)分配给.htaccess。在WebspaceExplorer中, 通过右键单击.htaccess并选择变更权利项目。输入值644在里面八进制表示法领域。这对于a.htaccess的功能就足够了。
  • 仔细检查命令是否有错别字, 并确保没有丢失。

内容

  • RewriteBase参数和目录规范
  • RewriteBase和RewriteRule在同一目录中
  • 不同目录中的RewriteBase和RewriteRule
  • 避免错误的提示
  • 到达顶点
一盏木

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: