【问题标题】:Rewrite URL to all lower case letters and redirect some URL to home page using .htaccess file将 URL 重写为所有小写字母并使用 .htaccess 文件将某些 URL 重定向到主页
【发布时间】:2016-09-16 07:39:01
【问题描述】:

我的问题是我想为.htaccess 文件编写自己的规则。我已经搜索了互联网,他们没有告诉我如何编写自己的具体规则。我所知道的是它使用正则表达式。我对正则表达式知之甚少。

我正在寻找的是我有以下链接

http://example.com/work/project-1 
http://example.com/work/project-2

当用户这样输入时

http://example.com/work/PrOJect-2

我希望他们重定向到(将所有大写字母转换为小写字母)

http://example.com/work/project-2 

但是当用户这样输入时

http://example.com/work/ 

http://example.com/work  

我想重定向到主页。

为此,我有 htaccess 文件 其中有一些规则,如

RewriteEngine On
RewriteRule ^work(.*)/([^/]*) work-single.php$1?slug=$2 [QSA]

请帮我写下这些规则。

【问题讨论】:

  • 我不熟悉编辑 .htaccess 但您似乎想根据您输入的 url 进行重定向 - 看看 yourls.org 这是一个用 php 编写的链接缩短站点,它查看输入的 url 与 mysql 数据库进行比较并重定向 - 它可能会给你一些想法

标签: php regex apache .htaccess mod-rewrite


【解决方案1】:

您要实现的目标称为 URL 重写。

这是一个工作 .htaccess 文件的示例:

RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url_params=$1 [L,QSA]

使用上述规则集的结果是,来自请求的完整 URL 正在服务器端传递到 index.php,其中可以使用以下方法获取字符串:

$urlString = $_GET['url_params'];

并进一步处理,例如将字符串分割成标记数组:

$urlTokens = explode('/', $urlString);

foreach($urlTokens as $token){

    // do something with each token

}

最后分析令牌(现在大多数人实际上并没有手动执行的任务,因为使用了自动处理此问题的框架。例如 Zend 框架),对于每个有效的“令牌”,您采取适当的行动(在现代框架中,这称为“路由”)。

有关如何设置 url 重写的完整教程,您可以查看: https://code.tutsplus.com/tutorials/using-htaccess-files-for-pretty-urls--net-6049

它可以非常简单,也可以完全复杂 - 取决于您的需求。

请记住,这只是一个示例,可能不适用于您的具体情况,您可能希望对其进行自定义以满足您的需求 - 或者至少从中学习并解决您的问题。

我建议您阅读并了解有关该主题的更多信息,这将使您更容易使用该技术。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2011-09-24
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 2013-12-05
    • 2016-05-23
    • 1970-01-01
    • 2013-10-08
    相关资源
    最近更新 更多