从 URL 中删除 URL 参数和 index.php 文件名

问题描述 投票:0回答:1

我需要一些推送,我有一个网站,其 URL 结构如下

domain.com/folder/index.php?name=asdasdAs2

如何删除 URL 的这一部分

index.php?name=
,使其看起来像这样

domain.com/folder/asdasdAs2

传递的值(asdasdAs2)有时也包含这些符号(.)或(-)或(_),所以它看起来像这样(asd.asdAs2)或(asdasd_As2)或(asd-aSd-As2)

我一直在我的 .htaccess 文件中尝试使用此代码,但它不起作用。

RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

RewriteRule ^/folder/(.*) /folder/index.php?name=$1

还有这个

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php
</IfModule>

还有这个

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([a-z0-9]+)/([a-z0-9]+)$     $1/index.php?name=$2 [L]

最后一个可以完成这项工作,但只能使用字母数字单词 ex.(asdasdAs2),但不能在 (asd.asd) 或 (asd_asdas2) 上

apache .htaccess mod-rewrite url-rewriting
1个回答
2
投票

使用您显示的示例,请尝试遵循 .htaccess 规则文件。

请务必:

  • 保留 .htaccess 文件以及名为
    folder
    的文件夹。
  • 在测试 URL 之前清除浏览器缓存。
RewriteEngine ON
##External redirect rules here.
RewriteCond %{THE_REQUEST} \s/(folder)/index\.php\?name=(\S+)\s [NC]
RewriteRule ^ /%1/%2? [R=301,L]

##Internal rewrite rules from here...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/?$ $1/index.php?name=$2 [QSA,L]
© www.soinside.com 2019 - 2024. All rights reserved.