php - 如何使用 htaccess 从 url 中删除页面别名?

标签 php apache .htaccess mod-rewrite

我创建了自己的 cms,但发现以下问题。页面链接显示如下:

https://www.example.com/page/contact-us

我希望它们显示为这样,通过删除 page 别名:

https://www.example.com/contact-us

我的 Htaccess:

Options -MultiViews
RewriteEngine On

RewriteRule ^page/([\s\S]*)$ single-page.php?slug=$1 [L]

我已经尝试过,但对我不起作用

RewriteEngine On
RewriteRule ^([^/]*)$ /page/single-page.php?slug=$1 [L]

最佳答案

RewriteRule ^([^/]*)$ /page/single-page.php?slug=$1 [L]

这不起作用,因为它将所有 URI 转发到显然不存在的 /page/ 目录。

您应该使用此规则:

# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/?$ single-page.php?slug=$1 [L,QSA]

关于php - 如何使用 htaccess 从 url 中删除页面别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64828323/

相关文章:

php - 使用 .htaccess 绕过 Zend Framework 并在子目录中运行不同的框架

.htaccess 重定向,如果 url 中的文件夹名称

PHP: PDO bindValue() 导致返回 0 个结果

php - 使用 PHP 减少 HTML 输出中的间距

php - 虚拟主机在 ubuntu LAMP 堆栈中无法正常工作

.htaccess - 访问 https 页面后,所有后续页面都从 https 提供

php - 使用 PHP/jQuery 替换 HTML 工具提示内容

php 执行 shell 命令仅在大量使用模式下提供随机输出

php - 如何指向一个URL :PORT to specific directory in apache

linux - 403 禁止尝试访问浏览器上的文件夹