我正在寻找重写 url 字符串的第一个目录并让请求的其余部分仍然有效。
例如:我想要它,所以当用户单击链接时:/products/category/item.php
它实际上抓取了文件:/shop/category/item.php
但仍显示为/products/category/item.php
URL
这将是动态的,所以它应该像/products/$
/shop/$1
我猜的那样。
我正在寻找重写 url 字符串的第一个目录并让请求的其余部分仍然有效。
例如:我想要它,所以当用户单击链接时:/products/category/item.php
它实际上抓取了文件:/shop/category/item.php
但仍显示为/products/category/item.php
URL
这将是动态的,所以它应该像/products/$
/shop/$1
我猜的那样。
您不需要 mod_rewrite。何时避免 mod_rewrite。
将 url 目录映射到文件目录是 Apache 的一项基本功能,由mod_alias模式处理(您肯定已经有了)。
所以基本上你有Alias和AliasMatch指令。在您的情况下,第一个就足够了:
Alias /products/ /path/to/web/document/root/shop/
映射仅在服务器端完成,因此最终用户看到的 url 永远不会被修改。
试试这个:
RewriteEngine On
RewriteRule ^products/(.*) shop/$1 [L]
通过启用 mod_rewrite 和 .htaccess httpd.conf
,然后将此代码放在您.htaccess
的DOCUMENT_ROOT
目录下:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^products/(.+)$ /shop/$1 [L,NC]