亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法在 .htaccess 中正確重寫和重定向 url

無法在 .htaccess 中正確重寫和重定向 url

PHP
胡說叔叔 2022-01-08 20:16:24
我正在嘗試使我的網站中的 url 對用戶友好,但似乎服務器根本沒有考慮 .htaccess 重寫命令。該項目位于 中,localhost并命名為ecommerce. 我想“轉換”這個 url:localhost/ecommerce/product?name=abc 到localhost/ecommerce/product/abc.這是 .htaccess 文件:RewriteEngine OnRewriteBase /## hide .php extension# To externally redirect /dir/foo.php to /dir/fooRewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]RewriteRule ^ %1 [R,L,NC]## To internally redirect /dir/foo to /dir/foo.phpRewriteCond %{REQUEST_FILENAME}.php -fRewriteRule ^ %{REQUEST_URI}.php [L]##hide /indexRewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\index [NC]RewriteRule ^ %1 [R,L,NC]##HERE IS THE IMPORTANT PARTRewriteCond %{THE_REQUEST} ^(GET|POST|HEAD)\ /product\.php\?name=([^&]+)RewriteRule ^ /product/%2/? [L,R=301]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^/?product/([^/]+)/?$ /product.php?name=$1 [L]當我訪問localhost/ecommerce/product?name=abcurl 時保持原樣,當我訪問時localhost/ecommerce/product/abc我得到500 Internal Server Error.我以為xampp httpd.conf有問題,所以改了<Directory />    AllowOverride None    Order allow,deny    Allow from all</Directory>到<Directory />    AllowOverride All    Order allow,deny    Allow from all</Directory>它仍然不起作用!從 .htaccess 中刪除我隱藏 .php 擴展名的部分也沒有任何區別。
查看完整描述

1 回答

?
青春有我

TA貢獻1784條經驗 獲得超8個贊

用這個里面替換你的代碼/ecommerce/.htaccess:


Options -MultiViews

RewriteEngine On

RewriteBase /ecommerce/


##HERE IS THE IMPORTANT PART

RewriteCond %{THE_REQUEST} /product\.php\?name=([^&\s]+) [NC]

RewriteRule ^ product/%1/? [L,R=301]


## hide .php extension

# To externally redirect /dir/foo.php to /dir/foo

RewriteCond %{THE_REQUEST} \s/+(.*?/)?(?:index|(\S+?))\.php[/\s?] [NC]

RewriteRule ^ /%1%2 [R=301,L,NE]


RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^/?product/([^/]+)/?$ product.php?name=$1 [L,NC,QSA]


## To internally redirect /dir/foo to /dir/foo.php

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME}.php -f

RewriteRule ^(.+?)/?$ $1.php [L]

確保在新瀏覽器中測試它以避免舊瀏覽器緩存。


查看完整回答
反對 回復 2022-01-08
  • 1 回答
  • 0 關注
  • 171 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號