我正在寻找重写url字符串的第一个目录,并让其余的请求仍然有效。
例如:当用户点击以下链接时,我希望如此:/products/category/item.php
它实际上抓取了以下文件:/shop/category/item.php
但仍显示为/products/category/item.php
作为网址
这是动态的,所以我应该像/products/$
/shop/$1
一样猜测。
答案 0 :(得分:2)
您不需要mod_rewrite。 when to avoid mod_rewrite
将url目录映射到文件目录是Apache的基本功能,由模式 mod_alias 处理(当然已经存在)。
所以基本上你有Alias和AliasMatch指令。在你的情况下,第一个就足够了:
Alias /products/ /path/to/web/document/root/shop/
映射仅在服务器端完成,因此最终用户看到的URL永远不会被修改。
答案 1 :(得分:1)
试试这个:
RewriteEngine On
RewriteRule ^products/(.*) shop/$1 [L]
答案 2 :(得分:1)
通过httpd.conf
启用mod_rewrite和.htaccess,然后将此代码放在.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]