2011-09-28 209 views
1

我想用正则表达式来替换.html文件扩展名,用/所以www.example.com/page.html将成为www.example.com/page/。我还希望从此规则中排除文件夹,因此应排除www.example.com/specialdir/中的任何内容。正则表达式来替换文件扩展名

编辑:这将在PHP中使用

+0

什么味道的正则表达式?用什么语言或编辑器? – YXD

+0

这将用于php – Xerri

+0

URL在什么情况下出现?它本身还是它只是一个更长的字符串的一部分?长串中是否有多个?网址是否有查询或片段?在代表性的例子之前和之后,它总是有帮助的。 – ridgerunner

回答

1

搜索

(www\.example\.com/(?!specialdir/).*)\.html$ 

\1$1全部更换,这取决于您正则表达式的实现。

编辑:在PHP:

$result = preg_replace('%(www\.example\.com/(?!specialdir/).*)\.html$%', '\1', $subject); 
3

最好使用htaccess的:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ $1.html [L,QSA] 

来源:Snipplr

因此,这将改变所有http://somesite/someurlhttp://somesite/someurl.html在服务器端。

+0

我想要另一种方式....删除.html,而不是添加。另外,我想在规则不适用于某个文件夹 – Xerri

+3

@thearchitect的情况下添加例外情况,对htaccess和mod_rewrite进行一些研究。这可能是你正在寻找的答案。 –

+0

@thearchitect我的代码不会将用户重定向到.html页面。它在服务器端和用户在任务栏中看到更改:http://somesite.com/somepage而不是http://somesite.com/somepage.html – Olli