【发布时间】:2021-03-08 23:17:57
【问题描述】:
之前我安装了 SSL,一切正常!这是我的根网络服务器 .htaccess 文件中的代码:
Options +MultiViews
RewriteEngine On
RewriteCond %{HTTP_HOST} andrea\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://andrea.com/$1 [R,L]
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule (.*) $1.php [L]
它可以正常工作,并且完全符合我的要求。所以如果我去例如:
www.andrea.com/account
它访问“www.andrea.com/account.php”。这就是我想要的。 但是,我确实在根目录中有一个名为“产品”的文件夹。该文件夹中还有另一个“.htaccess”文件,我不知道必须更改这两个中的哪一个才能使以下内容正常工作。
当您访问此网址时: http:____/products/view/Hello/Goodbye
我希望它访问“产品”文件夹中的“view.php”,并且在那个 php 文件中我可以这样做:
$id = $_GET["id"]; // This would have "Hello"
$cat = $_GET["cat"]; // This would have "Goodbye"
当我在“产品”文件夹中使用这个 htaccess 时,效果很好:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/?(.*)$ /products/view.php?id=$1&cat=$2
上面这段代码的问题是,如果我去: http:____/products/你好/再见
我希望它访问“products”文件夹中的“index.php”。但相反,它转到“view.php”!就像上面的 htaccess 代码强制所有人转到 view.php (只有当我在 url 中有“view/____”时才应该这样做。 我希望上面的 url 转到“products”文件夹中的“index.php”,在该文件中我应该能够访问 ID 和 CAT 变量。
对在我的 .htaccess 文件中进行哪些更改有任何想法吗?抱歉,我花了 2 个多小时,我的代码底部的一行我都看不懂,但它不起作用:/
【问题讨论】:
-
您是否托管多个域?
/products/.htaccess文件中第一个重定向背后的意图是什么 - 这似乎与根目录中的 HTTP 到 HTTPS 重定向冲突?在 URL/view/Hello/Goodbye中 - 哪些部分是可选的?您的指令暗示Hello和Goodbye都可以是可选的 - 但这在您的问题中没有说明?
标签: .htaccess ssl ssl-certificate