apache — PHP Переписать несколько параметров одновременно с / param1 / param2

Я хотел бы знать, как переписать несколько параметров в / param1 / param2

Давайте предположим, что я включил файл с именем account.php с

http://myurl.com/index.php?p=account.

Работает просто отлично и переписывается

http://myurl.com/account

но скажем, я хочу иметь несколько параметров в account.php, как

http://myurl.com/index.php?p=account&настройки

который должен быть переписан так:

http://myurl.com/account/settings Как бы я это сделал?

.файл htacces:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/(favicon\.ico|apple-touch-icon.*\.png)$ [NC]
RewriteRule (.+) index.php?p=$1 [QSA,L]
</IfModule>

PHP-код для включения файлов:

 $pages = array('products','about','impressum','home','support','solutions','mc','team','account');

$p = 'home';
if(isset($_GET['p'])) {
$p = $_GET['p'];
}
if(in_array($p, $pages)){
include 'includes/'.$p.'.php';
}
else {
include 'includes/home.php';
}

0

Решение

Я работаю с этим кодом на моем сайте, делает то, что вы ищете

RewriteEngine on
RewriteBase /

RewriteRule ^post/([^/]+)/([^/]+)$ single.php?post_type=$1&post_id=$2 [QSA]
0

Другие решения

RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)/?$ index.php\?p=$1&action=$2
RewriteRule ^([a-zA-Z]+)/?$ index.php\?p=$1

для каждого ([a-zA-Z]+) он добавляет еще одно число к «результатам» .. $ 1, $ 2, $ 3 и т. д. Таким образом, вы можете добавить столько переписываний, сколько захотите … например, это одна из моих модификаций модов …

#WMS LIVE EDITOR
RewriteRule ^WMS/templateeditor/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ WMS/templateeditor.php\?p1=$1&p2=$2&p3=$3&p4=$4
RewriteRule ^WMS/templateeditor/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ WMS/templateeditor.php\?p1=$1&p2=$2&p3=$3
RewriteRule ^WMS/templateeditor/([a-zA-Z0-9]+)/([a-zA-Z0-9]+)/?$ WMS/templateeditor.php\?p1=$1&p2=$2
RewriteRule ^WMS/templateeditor/([a-zA-Z0-9]+)/?$ WMS/templateeditor.php\?p1=$1
RewriteRule ^WMS/templateeditor/?$ WMS/templateeditor.php

на странице php, просто добавьте $_GET['action'];

а затем настройте свой php, где, если для страницы установлено действие, перейдите к этому действию (в данном случае, к настройкам).

Я просто использовал «действие» в качестве примера … это может быть то, что вы хотите.

РЕДАКТИРОВАТЬ

RewriteEngine On
RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)/?$ index.php\?p=$1&$2
RewriteRule ^([a-zA-Z]+)/?$ index.php\?p=$1

мой php код для проверки результатов

$p = 'home';

if(isset($_GET['p'])) {
$p = $_GET['p'];
echo 'p:'. $p;
}

echo ' ';

if(isset($_GET['settings'])) {
echo 'yes';
}

я пошел в domain.com/profile/settings и это повторило следующее: p:profile yes

крепление включает в себя

if(file_exists('rootDir.php')) { include_once ('rootDir.php'); }
if(file_exists('../rootDir.php')) { include_once ('../rootDir.php'); }
if(file_exists('../../rootDir.php')) { include_once ('../../rootDir.php'); }
if(file_exists('../../../rootDir.php')) { include_once ('../../../rootDir.php'); }
if(file_exists('../../../../rootDir.php')) { include_once ('../../../../rootDir.php'); }
if(file_exists('../../../../../rootDir.php')) { include_once ('../../../../../rootDir.php'); }
if(file_exists('../../../../../../rootDir.php')) { include_once ('../../../../../../rootDir.php'); }

Это поможет игнорировать «поддельные папки» в URL

// ---------------------------------------- http() ---- determine if http/https
if (!function_exists('http')) {
function http() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == 'on') {$pageURL .= 's';}
$pageURL .= '://';
return $pageURL;
}
}

это функция php, которая определяет, использует ли ваш сайт http: // или https: // для абсолютных путей


это функция, чтобы получить URL вашего сайта для абсолютных путей

// ---------------------------------------- parse URL ---- split URL into parts
$websiteurl = http() . $_SERVER[HTTP_HOST] . $_SERVER[REQUEST_URI];
$website = parse_url($websiteurl);
$websitedomain = $website['host'];
if (strpos($websiteurl, '~') !== FALSE) {
$subweb = explode('/', $websitedomain . $_SERVER[REQUEST_URI]);
$websitedomain = $subweb[0] .'/'. $subweb[1];
}

пример того, как добавить код на ваш сайт

<link rel="stylesheet" type="text/css" href="<?php echo http() . $websitedomain .'/WMS/css/style.css'; ?>"/>
1

По вопросам рекламы [email protected]