我要這個:
https://example.com/something
由此:
https://example.com/?q=something
我發現了很多類似的問題 stackoverflow,但沒有一個對我有用,所以請幫助我。
例如我試過這個:
RewriteEngine On
RewriteRule ^(.*) index\.php?q=$1
使用這個 php 代碼:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Document</title>
</head>
<body>
<?php echo $_GET['q'] ?>
</body>
</html>
但它總是顯示“index.php”
uj5u.com熱心網友回復:
RewriteRule ^(.*) index\.php?q=$1...但它總是顯示“index.php”
這是因為相當通用的模式^(.*)也匹配index.php并最終將請求重寫index.php?q=index.php為重寫引擎的第二遍(當在目錄背景關系中使用時,如.htaccess)。
如果您的 URL(如/something)不包含點,那么您可以簡單地從正則運算式中排除點,因此它不會匹配index.php。不含點還意味著它應該避免匹配任何靜態資源(通常直接映射到檔案結束的檔案擴展名,這是自然由點分隔,例如。image.jpg,styles.css等)。
例如,請嘗試以下操作:
RewriteRule ^([^.]*)$ index.php?q=$1 [L]
沒有必要對替換字串(第二個引數)中的文字點進行反斜杠轉義,因為這是一個“常規”字串,而不是正則運算式,并且點在這里沒有特殊含義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/337151.html
