2016-09-16 157 views
0

我的问题是我想为.htaccess文件编写自己的规则。我搜查了互联网,他们没有告诉我如何编写我自己的具体规则。我所知道的是它使用正则表达式。我对正则表达式知之甚少。将URL重写为全部小写字母,并使用.htaccess文件将某些URL重定向到主页

我所寻找的是我有以下链接

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] 

一些规则,请帮我写这些规则。

+0

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

回答

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

它可以是非常简单的,或完全复杂 - 取决于你的需要。

请记住,这只是一个示例,可能无法满足您的具体情况,您可能需要对其进行定制以满足您的需求 - 或者至少从中学习并解决问题。

我建议您阅读并学习更多关于这个主题,它会让您更容易地使用该技术。

希望它可以帮助一点

相关问题