0

我的任务是更新一个相当丑陋、过时的网站,该网站包含数百个城市的信息,所有这些城市都位于它们自己的子域中,例如:

london.sitedomain.com

计划是摆脱所有这些子域并将站点正确设置为页面,格式如下:

sitedomain.com/london

不幸的是,有一个大量的硬编码列表组成了一个下拉菜单,看起来像这样(但有数百个):

<a href="http://sydney.sitedomain.com">Sydney</a>
<a href="http://auckland.sitedomain.com"> Auckland</a>
<a href="http://melbourne.sitedomain.com"> Melbourne</a>
<a href="http://perth.sitedomain.com"> Perth</a>
<a href="http://wellington.sitedomain.com"> Wellington</a>

如果我将这个巨大的列表设置为 php 字符串,是否有一种体面的方法可以将每个子域子字符串批量更改为正确的格式,如上所述?或者你能想到更好的解决方案吗?

4

4 回答 4

2

我认为您最好在 Notepad++ 或 Sublime Text 等程序中使用搜索和替换。两者都可以进行正则表达式搜索和替换文件夹(和子文件夹)。我不认为 PHP 将是一堆硬编码链接的最佳解决方案(它可以完成,但更容易和更可靠这边走。)

使用以下正则表达式:

search:  http://(.*?)\.sitedomain.com
replace: http://sitedomain.com/\1

可以在 PHP 中使用这些搜索和替换字段来执行此操作,但如果您只需要更改一堆 HTML 文件,那么我认为使用文本编辑器会好得多。

于 2012-07-28T13:59:12.607 回答
1

如果您的链接是动态的(即不是硬编码的),请更改它们分配给 HTML 模板的方式。以下应该有效:

$newurl = preg_replace("#(?:https?://)?(\w+)\.sitedomain\.com/(.*)#i", "sitedomain.com/$1/$2", $oldurl);

如果您的链接是静态的,请使用任何高级文本编辑器(Notepad++、Gedit、TextMate 等)并选择Search and Replace. 上面的第一个参数preg_replace是 forSearch字段,第二个参数是 for Replace

于 2012-07-28T13:59:10.530 回答
0

您可以做的一件事是,分解并获取第一个字符串并将其附加到其余的字符串中,包括 /

于 2012-07-28T13:54:19.240 回答
0

我建议您使用 .htaccess 中的 reg exp 进入不同的路线并自动化该过程。这样你甚至不需要写那么大的清单

像这样的东西:

RewriteCond %{HTTP_HOST} ^((www\.)?[^.]+)\.sitedomain\.com.*$
RewriteRule (.*) http://sitedomain.com/%1 [L]

这将获取 www(如果有),然后是子域并将子域附加到 url

于 2012-07-28T14:19:01.957 回答