RewriteCond制作包括404

时间:2017-01-23 16:37:04

标签: html regex apache .htaccess mod-rewrite

我遇到了更改地址的问题:

http://localhost/project/maps/pages/route.php?id=6680342be54df196c6cceba6624a10374dd6c51c1484853317

http://localhost/project/route/6680342be54df196c6cceba6624a10374dd6c51c1484853317

我设法通过htaccess这样做:

RewriteEngine On

RewriteRule ^routes/([0-9a-zA-Z]+) maps/pages/route.php?id=$1

但是现在我在route.php中包含所有我的404,例如:

<link href="../vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">

我的文件夹是这样的:

www
->project
 ->index.php
 ->maps
  ->vendor
   ->bootstrap
    ->css
     ->bootstrap.min.css
  ->pages
   ->route.php

我不想更改maps文件夹中的任何内容,因为这是一个由其他人开发的应用程序,但我不希望我的网站看起来像:

http://localhost/project/maps/pages/route.php

相反,我想要的东西,一旦上传到我的服务器看起来像

http://website.com/route/6680342be54df196c6cceba6624a10374dd6c51c1484853317

无需转储主文件夹上的文件。换句话说,如何使文件夹maps完全分离但使用不同的地址?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以设置重定向规则来修复/vendor/路径:

RewriteEngine On
RewriteBase /project/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !/maps/ [NC]
RewriteRule (?:^|/)((?:vendor|data|dist|js|mapicon|includes)/.+)$ maps/$1 [L,NC,R=301,NE]

RewriteRule ^routes/([0-9a-zA-Z]+)/?$ maps/pages/route.php?id=$1 [L,QSA,NC]