SEO URL에 대한 htaccess를 만들려고 하는데 매개변수가 있는 하위 폴더를 제외하고 모든 URL이 잘 작동하고 사이트 폴더로 리디렉션되는 htaccess를 만들었습니다.
sitefolder
은 내 루트 디렉터리이고 내 모든 파일이 거기에 있습니다.
예: URL은 다음과 같아야 합니다.
으아아아htaccess에서는 다음과 같습니다:
으아아아첫 번째 매개변수는 id이고 두 번째 매개변수는 slug이지만 두 URL 중 어느 것도 url로 이동하지 않습니다.
이것은 내 모든 htaccess 코드입니다:
으아아아이것이 subcat.php
에서 매개변수를 가져오는 방법이고 오류 시 인덱스로 리디렉션되지 않으므로 PHP 때문은 아닌 것 같습니다.
P粉4500792662024-03-31 14:53:01
If subcat.php
被调用(正如您在评论中所述),那么 .htaccess
不是问题。但是您发布的任何代码中都没有重定向到 index.php
(또는 모든 종류의 리디렉션).
그러나 다음 줄에는 런타임 오류가 있는 것 같습니다.
으아아아is_numeric()
只是测试参数是否为数字并返回布尔值,它不会返回该变量的数字值,这正是您所期望的。因此,无论 q
값이 무엇이든 SELECT는 항상 실패합니다(또는 첫 번째 항목을 반환합니다).
지정된 URL 매개변수의 실제 값을 검색하려면 다음과 같은 것이 필요할 수 있습니다.
으아아아그러나 먼저 이러한 URL 매개변수(예: $_GET
변수)가 전달되었는지 확인해야 합니다. 그렇지 않으면 스크립트가 E_NOTICE 메시지를 발행합니다.
업데이트:
RewriteRule
지시문과 충돌:
http://localhost/sitefolder/subcat/38/web-design
时,它将被此处的第一条规则捕获,该规则将请求重写为detail.php? q=subcat/39&slug=web-design
,而不是您期望的 subcat.php
。这可能失败,因为q=subcat/39
可能无效(我猜是触发了到/sitefolder/
)에서 리디렉션을 요청하는 경우? < /p>
충돌을 방지하려면 이러한 규칙의 순서를 변경하거나 정규식을 더 구체적으로 만들어야 합니다. 예를 들어. q
应该是数字 ID,则仅匹配数字值 (d+
)이면 말 그대로 anything(.*< /code>) 대신 현재 일치하는 항목입니다.
정규 표현식에 문자열 끝 앵커도 포함해야 합니다. 그렇지 않으면 이러한 규칙이 다시 작성된 URL과 일치하여 불필요한 루프를 발생시킵니다. 예:
으아아아또한 여기서 NC
标志,因为它可能会通过允许 contact-us
NC 플래그를 사용하는 것에 대해 의문을 제기합니다. 왜냐하면 잠재적으로 contact-us
및 < 来创建重复内容问题/code>CONTACT-US
즉, 규칙은 다음과 같아야 합니다.
으아아아
w
是 [a-zA-Z0-9_]
(
[a-zA-Z0-9_]의 단축 문자 클래스입니다.)
🎜정규식을 더욱 구체적으로 작성하면 충돌을 피할 수 있습니다. 이 명령은 위에서 아래로 실행됩니다. 첫 번째 일치 규칙이 승리합니다. 🎜