0

我一点也不擅长正则表达式。

我使用的 RewriteRule 是:

 RewriteRule ^([a-zA-Z0-9_-]+)$ /kurum.php?sef=$1 [QSA]

哪个转换

http://fxrehber.com/kurum.php?sef=gcm-forexhttp://fxrehber.com/gcm-forex

我的 php 文件将 URL 处理为:

<a href="http://<?php echo $demoUrl ?>" target="_blank">Open Demo Account</a>

如果我的 php 文件中不包含“http://”,则链接将转到

http://fxrehber.com/www.example.com

所以我将数据库中的 URL 保存为:www.example.com

但是现在我需要将 URL 与 https 一起使用,并且我需要从 php 文件中删除“http://”,并且我可能能够将数据库中的 URL 同时保存为 www.example.com 和https://www。例子.com

这样做的方法是什么?更改我的 RewriteRule 或使用一些正则表达式修改我的 php 文件?

4

2 回答 2

2

好的,我非常关心正则表达式和 RewriteRule,所以在解释我的问题时,我理解它可以通过检查 URL 中是否包含 http/https 来简单地解决:

if (0 !== stripos($demoUrl, 'http://') && 0 !== stripos($demoUrl, 'https://')) 
{ $demoUrl = 'http://' . $demoUrl; }

现在我可以在数据库中保存所有 3 种类型的 URL(以 www、http 和 https 开头),并且不需要修改旧的。但我仍然想知道是否有一种方法可以通过重写器使用没有 http/https 的链接。(正如我之前所说,当我点击我网站中的链接“www.example.com”时,它会尝试访问 www.mysite.com/www.example.com)

于 2013-10-04T21:33:18.553 回答
0

规则中的正则表达式rewrite用于启用干净的 URL。该机制将整个 URI 传递到kurum.php- via $_GET['sef'],内容路由应该发生的地方。

如果确实存在与请求 URI 匹配的文件/目录,则以下规则将禁用。 rewrite

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([a-zA-Z0-9_-]+)$ /kurum.php?sef=$1 [QSA]
于 2013-10-04T15:51:15.890 回答