如何使用 2 个参数更改 URL 格式以清除子目录中的 URLs?

How to change URL format with 2 parameters to clean URLs in a subdirectory?

摸不着头脑,找不到合适的解决办法。

我的 root/main 目录中有以下 htaccess 代码:

    <IfModule mod_rewrite.c>
RewriteOptions inherit
Options +FollowSymLinks

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f

RewriteRule ^(.*)$ .php

RewriteEngine On

# browser requests PHP
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ / [L,R=301]

# check to see if the request is for a PHP file:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /.php [L]

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE] 

</IfModule>

然后我有一个名为 /classic-wow/ 的子目录。

其中,我有一个名为 buy-account.php?id=12345&ad=advertising-title

的文件

我寻求一种解决方案,将 url 变成:buy-account/12345/advertising-title

到目前为止,main/root 目录中的 htaccess 省略了 .php 这很好,但是,我无法将参数转换为干净的 url ?id =12345&ad=advertising-title -> /12345/advertising-title

如何做到这一点?子目录 classic /root/classic-wow/ 中是否需要额外的 .htaccess 或者可以从根目录完成?

classic-wow/.htaccess 中,您可以使用此规则:

Options -MultiViews
RewriteEngine On

RewriteRule ^(buy-account)/([\w-]+)/([\w-]+)/?$ .php?id=&ad= [L,QSA,NC]