【问题标题】:URL redirection on Network Solutions host网络解决方案主机上的 URL 重定向
【发布时间】:2012-07-27 12:23:56
【问题描述】:

我正在尝试解决没有 .php 扩展名的 PHP 页面请求。我实际上更喜欢没有文件扩展名的 URL,但这不是现在最大的问题。问题是当前配置破坏了外部链接:

www.[domainname].com/abc/forms 返回自定义 404 页面。

www.[domainname].com/abc/forms.php 正确完成。

www.[domainname].com/service 解析为 www.[domainname].com。

对 www.[domainname].com/abc 的请求会解析为正确的 index.php,并且不会将 URL 重写为 www.[domainname].com/abc/index.php。

目录结构大致是这样的:

  • [域名]
    • index.php
    • ABC
      • index.php
      • forms.php
      • 其他.php
    • 定义
      • index.php
      • blah.php

这是我的 htaccess 文件。第二个块应该接受对一个文件的任何请求,如果它是一个 .php 文件,它将是一个有效文件,并附加“.php”扩展名。它不这样做。第三个块是我尝试强制请求 forms.php 页面来解决最常见的错误。这不起作用,但以下行确实起作用(如上所述)。最后,自定义 404 页面正在起作用。

Options -Indexes
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^[domainname].com [NC]
RewriteRule ^(.*)$ http://www.[domainname].com/$1 [L,R=301]


RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php


RewriteRule ^abc/forms$ /abc/forms.php [L,R=301]

RewriteRule ^service(.*)$ / [L,R=301]
ErrorDocument 404 /404.php

我在这里遗漏了什么吗?谢谢。

【问题讨论】:

  • MultiViews 是否在任何地方启用?您是否尝试在选项中添加-MultiViews
  • 我没有指定 MultiViews 选项。 MultiView 的显式设置 (+/-) 都不会影响这一点。

标签: .htaccess mod-rewrite url-rewriting


【解决方案1】:

我认为RewriteBase 是必需的,如下所示:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

【讨论】:

    猜你喜欢
    • 2011-06-08
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多