我有這個特定的問題,我必須檢查的URL,如果它的一部分是8字符長哈希代碼保存在我的數據庫或其正常的網址,你想瀏覽。htaccess調用php腳本,然後繼續處理
例如,如果我寫的網址:
- www.example.com/A4s8Gga3
i want to process it with my script in php file
如果我寫網址:
-www.example.com/my-books
-www.example.com/about
i want to navigate on those pages.
我知道我必須使用htaccess的(這麼多,我管理自己),到目前爲止它看起來像這樣:
#part1
Options +FollowSymLinks
RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_URI} (\/\w+)$ [NC]
RewriteRule ^(.*)$ mobile_redirect.php [L]
#part2
RewriteCond %{REQUEST_URI} (/|\.htm|\.php|\.html|/[^.]*)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php
我mobile_redirect.php看起來是這樣的:
ob_start();
require_once('connect.php');
$request = $_SERVER['REQUEST_URI'];
$request_hotovy = str_replace('/', '', $request);
$request_hotovy = mysql_real_escape_string($request_hotovy);
$select = "SELECT HASH_ID,OFFER FROM kasko_send_form WHERE MOBILE_HASH_ID = '".$request_hotovy."'";
$query = mysql_query($select);
if(mysql_num_rows($query) > 0){
// request is mobile hash id
$result = mysql_fetch_array($query);
$hash_id = $result['HASH_ID'];
header("Location: some_link?def=".$hash_id);
} else {
// request is normal url
header("Location: ".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
}
我知道它最終會在循環中重定向。我試圖在part2之後放置part1,但仍然遇到同樣的問題。我使用Joomla和它有很多的URL(其中即時通訊不能夠寫下來),這並不是真正的目錄或文件,這就是爲什麼我不能只是在我的PHP文件中使用此解決方案:
ob_start();
require_once('connect.php');
$request = $_SERVER['REQUEST_URI'];
$request_hotovy = str_replace('/', '', $request);
$request_hotovy = mysql_real_escape_string($request_hotovy);
$select = "SELECT HASH_ID,OFFER FROM kasko_send_form WHERE MOBILE_HASH_ID = '".$request_hotovy."'";
$query = mysql_query($select);
if(mysql_num_rows($query) > 0){
// request is mobile hash id
$result = mysql_fetch_array($query);
$hash_id = $result['HASH_ID'];
header("Location: some_link?def=".$hash_id);
} else {
// request is normal url
header("Location: page_not_found.php");
}
因爲有明確在結束閱讀我的htaccess後,joomla完成了更多的url處理(我對joomla也不太瞭解)。
你們可以給我一個提示如何處理url(然後也許改變它,所以它不會在循環中結束,然後在part1恢復正常後再次更改它,因此它可以繼續處理,因爲它通常)?
此外,如果你們有什麼好的教程在那裏我可以學到這樣的事情這將是非常有益的,因爲我明白只有正則表達式的基本知識和htaccess的是如何工作的?
因爲這是一個有點偏離主題,我寫了一個額外的命令:在這裏恕我直言,正確的方法是寫一個Joomla插件。如果找不到數據庫記錄,則不必處理重定向。 – Webdesigner