Текущая активная система URL-адресов выглядит так:
http://example.com/dashboard/pages.php
http://example.com/dashboard/page.php?id=10
Поэтому я хочу, чтобы тот же URL был доступен, если вы используете:
http://example.com/dashboard/pages
http://example.com/dashboard/page/id/10
http://example.com/dashboard указывает на /var/www/html/dashboard
И снова, когда я использую субдомен, я хочу, чтобы тот же URL был доступен, если я использую:
http://subdomain.example.com/pages
http://subdomain.example.com/page/id/10
Тогда система активных URL-адресов выглядит так:
http://subdomain.example.com/pages.php
http://subdomain.example.com/page.php?id=10
http://subdomain.example.com указывает на /var/www/html/dashboard
Таким образом, корневой каталог домена и поддомена отличается от него.
И я хочу это только для файлов php. Я не хочу, чтобы это повлияло на структуру каталогов css или js так или иначе, поскольку я использую относительный путь.
Может ли кто-нибудь помочь в том, что должно быть содержимым htaccess? Я очень плохо разбираюсь в регулярных выражениях.
Попробуйте добавить эти правила перезаписи в файл htaccess в корневом каталоге документа.
Options -Multiviews FollowSymLinks
RewriteEngine On
RewriteCond %{THE_REQUEST} \ /+dashboard/([^/]+)\.php(\?|\ |$)
RewriteRule ^ /dashboard/%1 [L,R=301]
RewriteCond %{THE_REQUEST} \ /+dashboard/([^/]+)\.php\?([^=]+)=([^&\ ]+)
RewriteRule ^ /dashboard/%1/%2/%3 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/dashboard/$1.php -f
RewriteRule ^dashboard/([^/]+)$ /dashboard/$1.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/dashboard/$1.php -f
RewriteRule ^dashboard/([^/]+)/([^/]+)/([^/]+)$ /dashboard/$1.php?$2=$3 [L,QSA]
Затем убедитесь, что все ваши относительные ссылки (например, CSS) не сломаются, потому что теперь у вас есть совершенно другая относительная база URL-адресов, добавьте это в заголовок своих страниц:
<base href="/dashboard/" />
Или независимо от того, какая база должна быть.
попробуй это
для htaccess:
AddDefaultCharset UTF-8
Options -Indexes
RewriteEngine on
# Usually it RewriteBase is just '/', but
# replace it with your subdirectory path
# For root domain following line
RewriteBase /
# For sub directory following line
RewriteRule ^/?([-a-zA-Z0-9_+]+)/?([-a-zA-Z0-9_+]+)/?([0-9]+)/?$ $1.php?$2=$3 [L]
для make url в php
$re = "/\\.php\\??|=/m";
$str = "http://example.com/dashboard/pages.php\nhttp://example.com/dashboard/page.php?id=10";
$subst = "/";
$result = preg_replace($re, $subst, $str);
вывод:
http://example.com/dashboard/pages/
http://example.com/dashboard/page/id/10
Это сделает работу,
substr(strrchr(rtrim($url, '/'), '/'), 1)
Он отобразит номер страницы, т.е. 10.
Также это поможет вам,
$url='http://example.com/dashboard/page/id/10';
if(preg_match("/\/(\d+)$/",$url,$matches))
{
$end=$matches[1];
}
Вывод для обоих кодов будет:
10
Вот моя попытка с помощью онлайн-инструмента,