我是長期讀者,從來沒有問過問題。大多數只是通過閱讀這個非凡的論壇得到答案。最近幾天,我一直在嘗試解決 htaccess 的問題,這讓我無法在我的 web 專案 atm 上取得進展。您的幫助將不勝感激。
服務器:OpenLiteSpeed
當前規則集 .htaccess(.h??taccess 位于根目錄中)
RewriteEngine On
Options FollowSymlinks -MultiViews -Indexes
DirectorySlash Off
RewriteBase /
#set default characterset from server end
AddDefaultCharset UTF-8
### Rewrite Rules Added by CyberPanel Rewrite Rule Generator
RewriteCond %{HTTP_HOST} ^www.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
### End CyberPanel Generated Rules.
### Rewrite Rules Added by CyberPanel Rewrite Rule Generator
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
### End CyberPanel Generated Rules.
#By blocking access from libwww-perl you can eliminate many simpler attacks
RewriteCond %{HTTP_USER_AGENT} libwww-perl.*
RewriteRule .* ? [F,L]
## EXPIRES CACHING ##
# Add or remove file types if needed
ExpiresActive On
<FilesMatch "\.(jpg|jpeg|woff|woff2|png|gif|swf|ico|js|css|ttf|eot|ico|mp4|webm|svg|json|webp)$">
Header set Cache-Control "max-age=31536000, public, no-transform"
</FilesMatch>
## EXPIRES CACHING ##
#main landing page
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ main.php [L]
問題
- 我有一個名為:/packages/ 的物理檔案夾,位于服務器的根目錄中。
- 我想以 /packages 和 /packages/example/example/example 的模式將所有查詢捕獲到一個名為:packages_main.php 的檔案中,該檔案也位于根目錄中。
- 我已經嘗試了以下規則以及更多和變體
RewriteRule ^packages/(. ) package_main.php?qsa=$1 [L,QSA]
RewriteRule ^packages$ package_main.php [L,QSA]
RewriteRule ^packages package_main.php [L,QSA]
RewriteRule ^packages(. ) package_main.php [L,QSA]
**問題是,每當我打開https://example.com/packages時,它都會被重定向到https://example.com/packages/ ** 在末尾添加一個斜杠。
我希望它保持像https://example.com/packages這樣我也可以直接將查詢字串傳遞到頁面,例如https://example.com/packages?p=10&a=11但它重定向到https: //example.com/packages/?p=10&a=11這混淆了我的代碼。
我想捕獲除要直接傳遞給 package_main.php 的查詢字串之外的所有 url,例如https://example.com/packages?p=100,https://example.com/packages/abc/bbc?p =100 , https://example.com/packages/abc?p=100
這花了我 3 天的時間,但我似乎無法弄清楚。所以基本上我想要一個規則,將我所有的 example.com/packages 重定向到 package_main.php 而不添加尾部斜杠。由于斜線將查詢字串轉換為 package_main.php 的路徑以理解 & 它被錯誤地拾取。有人可以幫忙嗎。
uj5u.com熱心網友回復:
使用您顯示的示例,請嘗試遵循 .htaccess 規則檔案。請確保在測驗您的 URL 之前清除您的瀏覽器快取。
RewriteEngine On
Options FollowSymlinks -MultiViews -Indexes
DirectorySlash Off
RewriteBase /
#set default characterset from server end
AddDefaultCharset UTF-8
### Rewrite Rules Added by CyberPanel Rewrite Rule Generator
RewriteCond %{HTTP_HOST} ^www.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
### End CyberPanel Generated Rules.
### Rewrite Rules Added by CyberPanel Rewrite Rule Generator
RewriteCond %{HTTPS} !=on
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
### End CyberPanel Generated Rules.
#By blocking access from libwww-perl you can eliminate many simpler attacks
RewriteCond %{HTTP_USER_AGENT} libwww-perl.*
RewriteRule .* ? [F,L]
## EXPIRES CACHING ##
# Add or remove file types if needed
ExpiresActive On
<FilesMatch "\.(jpg|jpeg|woff|woff2|png|gif|swf|ico|js|css|ttf|eot|ico|mp4|webm|svg|json|webp)$">
Header set Cache-Control "max-age=31536000, public, no-transform"
</FilesMatch>
## EXPIRES CACHING ##
RewriteCond %{QUERFY_STRING} ^$
RewriteRule ^packages/?(.*)?$ package_main.php?qsa=$1 [L,QSA]
#main landing page
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ main.php [L]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/508416.html
標籤:阿帕奇 .htaccess 重定向 改写 openlitespeed
上一篇:為什么我的React應用程式沒有在指定的“domain.name”上啟動,而是在“domain.name:3000”上運行?
