2017-01-06 3 views
0

Как создать URL-адрес, который на самом деле не существует? Например, https://twitter.com/i/notifications- работает. При удалении /уведомлений со ссылкой вы получаете https://twitter.com/i/- Не работает., но этот URL-адрес /i/ на самом деле не существует.О том, что на самом деле не существует

Как это сделать?

+0

Что-то как что? –

+0

Как вы пытаетесь сделать .. есть ли какие-то проблемы, с которыми вы сталкиваетесь .. ?? –

+0

Это называется переписыванием запроса. Вы можете найти это – MiltoxBeyond

ответ

1

Вы можете создать файл .htaccess, который отправляет ВСЕ-запросы через один файл PHP, а затем использует логику в этом файле PHP, чтобы определить, существует ли URL-адрес. Например, вы можете использовать CodeIgniter .htaccess файл мой:

RewriteCond $1 !^(index\.php|images|css|fonts|js|robots\.txt|test) 
RewriteRule ^(.*)$ /index.php/$1 [L] 

Это позволяет еще задать изображения, CSS, JS и т.д., которые не получают переназначены, но никаких адреса, которые не начинаются с этими строками будут перенаправляться на index.php. Внутри index.php вы можете проверить строку запроса, чтобы определить, как обрабатывать URL-адреса и решать, существуют они или нет.

// code in index.php, modify to suit 
switch ($_SERVER["PATH_INFO") { // you might also check out REQUEST_URI 
    case "foo": 
    // do blah blah blah 
    break; 
    case "bar": 
    // do other blah blah blah 
    break; 
    default: 
    header("HTTP/1.0 404 Not Found"); 
    echo "Sorry but that page was not found"; 
} 
+1

Ваш 'RewriteRule' передает запрашиваемый URL-путь как _path information_ (то есть' $ _SERVER ['PATH_INFO'] '), а не строку запроса. – DocRoot

+1

@DocRoot DOH! ты прав. Редактирование ... –

1

Вы можете использовать URL переписывания путем редактирования .htaccess файла. Если .htaccess не существует, вы можете создать его в корневом каталоге проекта.

RewriteEngine on 
RewriteRule ^/?Some-text-goes-here/([0-9]+)$ /picture.php?id=$1 

выше будет конвертировать url.com/picture.php?id=51 в picture.php/Some-text-goes-here/51

В том же, как вы можете использовать ваш strtagy.

1

Спасибо всем за помощь!

Окончательное решение: RewriteRule ^/?i(/.*)?/company /company [L,NC]

+0

Вам не нужно добавлять '/?'. 'RewriteRule^i (/.*)?/ компания/компания [L, NC]'. Без этого было бы хорошо. Обе работы. Кажется, он лишний. Итак, подумал дать вам предложение. – Perumal

+0

«/?» (Префикс slash, сделанный _optional_ в этом регулярном выражении) требуется только в том случае, если это правило должно использоваться в конфигурации сервера или в контексте VirtualHost. В файлах '.htaccess' для каждого каталога URL-путь, сопоставляемый шаблоном' RewriteRule', не начинается с косой черты, поэтому здесь делается _optional_. – DocRoot

Смежные вопросы