使用.htaccess将URL路径转为查询字符串(无index.php)
实现URL内部重写(无重定向)
你说的内部重写是对的,就是让服务器在后台把请求的路径映射成带查询参数的地址,但浏览器地址栏保持不变。下面分两种常用服务器给你具体方案:
Apache服务器(用.htaccess)
如果你的网站用Apache,直接在网站根目录创建一个.htaccess文件,写入以下内容:
RewriteEngine On # 跳过真实存在的文件和目录,避免影响正常访问 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # 把单个路径段转成color参数,内部转发到首页 RewriteRule ^([a-zA-Z0-9-]+)$ /?color=$1 [L]
- 要是你的首页不是服务器默认的(比如是
home.html而不是index.html),把最后一行的/?color=$1改成/home.html?color=$1就行。 - 注意:要确保Apache开启了
mod_rewrite模块,并且服务器配置里允许.htaccess生效(需要设置AllowOverride All)。
Nginx服务器
如果用Nginx,需要修改你的站点配置文件(一般在/etc/nginx/sites-available/目录下),在server块里添加以下规则:
# 先检查请求的文件/目录是否存在,不存在则走重写规则 location / { try_files $uri $uri/ @rewrite_color; } # 定义重写规则 location @rewrite_color { rewrite ^/([a-zA-Z0-9-]+)$ /?color=$1 last; }
- 同样,如果首页不是默认的,把
/?color=$1改成你的首页文件路径,比如/home.html?color=$1。 - 改完配置后,需要重启Nginx服务生效(命令:
sudo systemctl restart nginx)。
内容的提问来源于stack exchange,提问作者Abarnes
相关产品推荐
相关产品推荐

