使用htaccess从URL中删除.php

Jon*_*lpi 2 php apache xampp .htaccess url-rewriting

我的网址: http://localhost/test.php

我在用:

的.htaccess:

RewriteEngine On 
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
Run Code Online (Sandbox Code Playgroud)

PHP:

$url = $_GET['url'];
echo var_dump($url);
Run Code Online (Sandbox Code Playgroud)

但我得到的$ url是:NULL NULL NULL NULL NULL NULL

Ste*_*ley 6

编辑:调整为处理重定向和重写.

RewriteEngine On 
RewriteBase /

# Redirect .php URLs to rewritten URLs
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+)\.php$ $1 [L,QSA,R=301]

# Rewrite URLs for processing by router (index.php)
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L,NC]
Run Code Online (Sandbox Code Playgroud)

您应排除RewriteCond %{REQUEST_FILENAME} !-d条件,因为如果您的URL与其匹配,它将尝试访问目录.在进行网址重写时可能不太理想.

的index.php

$url = isset($_GET['url']) ? $_GET['url'] : null;
var_dump($url);
Run Code Online (Sandbox Code Playgroud)

  • @ user2218297 - 您可能永远不想进行目录匹配.这就是原因.假设您的站点中有一个名为/ images的目录 - 如果您对您的站点有一个请求,例如mysite.com/images,它将尝试访问images目录而不是index.php?url = images - 前者很可能永远不会你想要什么 (2认同)