将URL重写为所有小写字母,并使用.htaccess文件将某些URL重定向到主页

时间:2016-09-16 07:39:02

标签: php regex apache .htaccess mod-rewrite

我的问题是我想为.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]

请帮我写下这些规则。

1 个答案:

答案 0 :(得分:0)

您要实现的目标称为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

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

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

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

希望它有所帮助