【问题标题】:Rewriting URL's Apache重写 URL 的 Apache
【发布时间】:2017-05-17 01:05:42
【问题描述】:

好吧,这件事让我发疯了一段时间。有很多关于如何使用 .htaccess 文件重写 URL 的信息。但由于某些原因,经过数小时的尝试,我仍然没有对我的网址产生任何影响。我已经尝试将指令移动到 apache2.conf,但仍然没有运气。我不擅长服务器管理,但我已经到了。我确实注意到那里有大量网站,可能是由网页设计师等 wordpress 网站或您拥有的网站,即使它们有干净的网址。

所以 AFAIK 我需要做的就是粘贴这些 mod 重写规则之一,例如

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

到我的 public_html 目录中名为 .htaccess 的文件。出于某种原因,这对我不起作用。我正在使用数字海洋,所以我有可能错过了设置 LAMP 服务器的一些关键步骤,因为我说我仍然要掌握服务器管理员。非常感谢任何帮助或建议!

【问题讨论】:

  • “干净的 URL”到底是什么意思? .php 最后没有显示?有类似 site.com/home 指向 home.php,site.com/faq 指向 faq.php 等等但没有文件夹?您提到的网站可能有这样的 URL,因为它们使用框架或 CMS,并且它们具有动态数据,而不仅仅是为了好看。
  • 您的 .htaccess 对我来说很好用。你遇到了什么错误?
  • 我说的是任何类型的重写。从删除 .php 到重定向旧页面
  • 我想真正的问题是,假设在这些重写指令中粘贴是否安全,或者这是你必须真正理解和熟悉 apache 的东西。有什么我可能错过的原因到目前为止没有任何工作

标签: php wordpress apache .htaccess mod-rewrite


【解决方案1】:

对于大多数 php 框架(wordpress、laravel 等),所有不是“真实”目录或文件的 url 请求都被重定向到单个入口点。例如。 index.php,处理请求并相应显示页面的位置。

这是一个简单的例子,所有不是实际目录或文件的请求都被重定向到 index.php 并被处理:

.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [NC,L]

index.php

<?php

switch($_SERVER['REQUEST_URI']) {
    default:
        echo "404: Page cannot be found";
        break;
    case 'page1':
        echo "This is page 1";
        break;
    case 'page2':
        echo "This is page 2";
        break;  
    case 'page3':
        echo "This is page 3";
        break;      
}

因此,如果您转到http://somedomain.com/page1,它将显示“这是第 1 页”。如果你去http://somedomain.com/page4它会显示“404:找不到页面”。

【讨论】:

猜你喜欢
  • 2010-10-30
  • 2012-02-05
  • 2011-12-02
  • 1970-01-01
  • 2011-03-17
  • 2018-02-20
  • 2014-05-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多