使用.htaccess重写从url中搜索并删除特定字符串

时间:2014-12-11 17:40:02

标签: .htaccess

使用.htaccess apache重写我希望从我的网址中删除子文件夹/子字符串。现在它看起来像:

www.domain.com/store/products.php`

我希望将其更改为:

www.domain.com/products.php

如何使用.htaccess apache重写?

2 个答案:

答案 0 :(得分:6)

您可以使用根.htaccess

执行此操作
RewriteEngine on 
RewriteBase / 
RewriteRule ^store/(.*) /$1 [R=302,L]

当测试工作正常时,更改[R=302] [R=301]

答案 1 :(得分:1)

您需要mod_rewrite。规则将是这样的:

RewriteEngine On
RewriteBase /myapp/
RewriteRule ^/store/products\.php$ /products.php

或者,对于许多不同的文件,例如products.phpplaces.phpblablabla.php

RewriteEngine On
RewriteBase /myapp/
RewriteRule ^/store/([a-z]+)\.php$ /$1.php

这取决于您要重写的URL。你应该阅读文档。

全匹配.htaccess规则

另外,我建议您使用以下catch all URLs模式。它会将任何路径重定向到index.php。这在许多CMS系统中广泛使用,使您能够使用PHP执行动态路由:

的.htaccess

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?path=$1 [L,QS

的index.php

<?php

$path = isset($_GET['path']) ? explode('/', $_GET['path']) : array();

// If you navigate to /foo/bar/dead/beef, yur $path var will be like:
// $path == array ( 0 => 'foo', 1 => 'bar', 2 => 'dead', 3 => 'beef' );

?>