Verwenden Sie htaccess, um die URL eines Verzeichnisses in eine PHP-Datei umzuschreiben
P粉957723124
P粉957723124 2024-01-10 17:18:14
0
1
439

Ich versuche, einfache Umschreiberegeln mithilfe von htaccess-Dateien durchzuführen. Ich hoste diese Seite auf localhost mit XAMPP:

localhost/naveesh/services.php

Mögliche Möglichkeiten, diesen Vorgang anzufordern, sind wie folgt:

localhost/naveesh/services?serv=Boat%20Dealers

Ich möchte die Anfrage für die folgende URL in die obige URL umschreiben

localhost/naveesh/services/Boat-Dealers

Ich habe es versucht, aber es gab einen 404-Fehler.

RewriteEngine On
RewriteRule ^/naveesh/services/([^/]+)/?$ /naveesh/services.php?serv= [L,QSA]

Nach einiger Recherche habe ich eine andere Option ausprobiert:

RewriteEngine On
RewriteBase /naveesh/

# Hide .php extension
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ .php [L]

RewriteRule ^services/([^/]+)/?$ /services.php?serv= [L,QSA]

Allerdings gibt es jetzt zu viele interne Weiterleitungsprobleme

P粉957723124
P粉957723124

Antworte allen(1)
P粉343408929

这是您的第一条规则(“隐藏 .php 扩展名”)导致“内部重定向过多”,因为它(错误地)将对 services/Boat-Dealers.php 的请求重写为 services/Boat-Dealers.php.php 等。这是因为条件(始终成功)没有检查您最终重写的内容。 REQUEST_FILENAME 不是您期望的那样。 (尽管颠倒这些规则的顺序可以解决这个迫在眉睫的问题。)

请参阅我对以下ServerFault 上的问题 有关此特定问题的更多详细信息。

但是,第二条规则也是不正确的(如 @Faizal 的回答中所述)。

这些规则的顺序也是错误的。

假设您的 .htaccess 文件位于 /naveesh/.htaccess (不是文档根目录),那么您的完整 .htaccess 文件应该看起来像这样:

# Disable MultiViews
Options -MultiViews

RewriteEngine On

RewriteRule ^services/([^/]+)/?$ services.php?serv=$1 [QSA,L]

# Hide .php extension
RewriteCond %{DOCUMENT_ROOT}/naveesh/$1.php -f
RewriteRule ^(.*?)/?$ $1.php [L]

请注意,替换字符串上的斜杠前缀已被删除。

此处不需要 RewriteBase 指令。相对替换是相对于.htaccess文件所在的目录。

您需要确保禁用MultiViews,因为如果禁用,此规则将无法按预期工作。该请求将被重写为 services.php,但不包含 serv URL 参数。 (有时会在某些共享服务器上启用多视图,这会导致许多冲突。)

此外,您不应该真正允许在请求的 URL 上使用可选的尾部斜杠。这可能会导致重复内容问题,因为您有两个不同的 URL(一个带有尾部斜杠,一个不带尾部斜杠)提供相同的内容。您的示例 URL 中没有尾部斜杠,那么为什么要包含它呢?如果您需要允许可选的尾部斜杠(例如,如果您有一些指向非规范 URL 的错误入站链接),那么您应该从外部将一个链接重定向到另一个。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage