.htaccess 使用htaccess重写URL时出现错误404

new9mtju  于 2023-03-19  发布在  其他
关注(0)|答案(1)|浏览(134)

嗨,我是新的URL重写。使用htaccess我想重写:
网址:https://example.com/services/state.php?state=CO&city=Arvada

https://example.com/services/CO/Arvada/
我尝试以下,但它是给404错误:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^state=([A-Za-z]+)&city=([A-Za-z]+)$
RewriteRule ^services/state\.php$ /services/%1/%2? [R=301,L]

state.php文件位于根目录/services,而htaccess文件位于根目录。

fkvaft9z

fkvaft9z1#

您必须为URL编写规则:https://example.com/services/CO/Arvada/这就是为什么你得到404错误

RewriteEngine On
RewriteBase /

# Rule for services/STATE/CITY/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^services/([^/]*)/([^/]*)/?$ /services/state.php?state=$1&city=$2 [END]

# Redirect state.php?state=STATE&city=CITY to services/STATE/CITY
RewriteCond %{QUERY_STRING} ^state=([A-Za-z]+)&city=([A-Za-z]+)$
RewriteRule ^services/state\.php$ services/%1/%2 [QSD, R=301,END]

这里最好使用END而不是L,因为使用END时Apache将不处理任何其他规则,如果使用L时使用这些规则,则会陷入重定向循环
在规则中:
RewriteRule ^services/state\.php$ services/%1/%2 [QSD, R=301,END]QSD表示不追加查询字符串

相关问题