PHP redirect 301 example code
Example code
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://www.newsite.com/new-page.php");
header("Connection: close");
exit();
If using file name without .php as part of smoothly url - example:
$fileName = basename(__FILE__, '.php');
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://www.mysite.cz/auto-moto/".$fileName."/");
header("Connection: close");
exit();
Date: 23.07.2020 - 12:3177LW NO topic_id
AD
Další témata ....(Topics)
Jak můžeme získat chyby na htm html stránce, které se projeví u uživatele v prohlížeči.
Ukážeme si příklad, který odešle zprávu o tom, že stránka je o 100px šiřší, jak uživatelova CLIENTAREA ( to, co vidí uživatel ze stránky) prohlížeče a také, že stránka nemá nastaven charset na UTF-8
Kód sestává ze javascriptu a php scriptu, který bude na serveru ukládat chybová hlášení.
Ukážeme si příklad, který odešle zprávu o tom, že stránka je o 100px šiřší, jak uživatelova CLIENTAREA ( to, co vidí uživatel ze stránky) prohlížeče a také, že stránka nemá nastaven charset na UTF-8
Kód sestává ze javascriptu a php scriptu, který bude na serveru ukládat chybová hlášení.
Nejdříve javascript
Tento script vložíme až na konec htm html (nebo inc php šablony kde je ukončení ) stránky mezi tagy /body a /html
</body>
<script type="text/javascript">
var s = new String();
var bUtf8 = false;
var m = document.getElementsByTagName("META");
for(var i = 0; i < m.length; i++){
s = m[i].content;
s = s.toLowerCase();
var nP = s.indexOf('charset');
var nPutf = s.indexOf('utf-8');
if(nP != (-1) && nPutf != (-1))
bUtf8 = true;
}
var httpRequestMy;
var sIE = "", sFF = "";
var nClientW = (parseInt(document.body.clientWidth));
var nScrollW = (parseInt(document.body.scrollWidth));
var nRozdil = nScrollW - nClientW;
if(nRozdil > 100 || bUtf8 == false){
// IE/zbytek sveta
if (window.ActiveXObject) {
httpRequestMy = new ActiveXObject("Microsoft.XMLHTTP");
sIE = "-IExplorer-";
} else {
httpRequestMy = new XMLHttpRequest();
sFF = "-Firefox-and-others-";
}
var d = new Date();
var url = "//myweb.com/stat/error.php?mess=<?php echo $_SERVER [SCRIPT_NAME];?>-pageWidth-"
+ nScrollW.toString() + "---clientWidth-" + nClientW.toString()
+ "-date-" + d.toDateString()+ "-" + d.toTimeString() + sFF + sIE;
if(bUtf8 == false)
url = "//myweb.com/stat/error.php?mess=<?php echo $_SERVER [SCRIPT_NAME];?>-UTF-8-false";
httpRequestMy.open("GET", url, true);
httpRequestMy.onreadystatechange= function () {processRequest(); } ;
httpRequestMy.send(null);
}
else {
//alert(nRozdil);
}
/****************/
function processRequest() {
if (httpRequestMy.readyState == 4) {
if(httpRequestMy.status == 200) {
var response = httpRequestMy.responseText;
if (response == 'EMPTY') {
alert('empty');
}
else {
//alert('OK');
}
}
}
else {
// alert("Error page loading "
// + httpRequestMy.status +":"+ httpRequestMy.statusText);
}
}
</script>
</html>
error.php může obsahovat takový kód
<?php
function vytvorNovyAzapisDoSouboru($fname, $poleVstup)
{ // BEGIN function vytvorNovyAzapisDoSouboru
if(file_exists($fname))unlink($fname);
$fp = fopen($fname, "a");
if (flock($fp, LOCK_EX)) { // do an exclusive lock
foreach ($poleVstup as $key=>$value) {
if(strlen($value)>5)
fwrite($fp, $value."
"); // D, d M Y
}
flock($fp, LOCK_UN); // release the lock
} else {
echo "Couldn't lock the file !";
}
fclose($fp);
chmod($fname, 0777);
} // END function vytvorNovyAzapisDoSouboru
$mess = $_GET['mess'];
$poleVstup = array();
if(file_exists('err_mess.txt')){
$poleVstup = file('err_mess.txt');
}
array_push($poleVstup, $mess);
//print_r($poleVstup);
vytvorNovyAzapisDoSouboru('err_mess.txt', $poleVstup);
?>
toString([radix])
/* prevede objekt na string */
toLocaleString()
var myDate = new Date();
document.write( myDate.toLocaleString());
// 24. února 2009 10:50:02
valueOf()
var number = new Number();
number = Number(100);
if (!isNaN(number))
document.write(number.valueOf()); // 100
hasOwnProperty(proName)
var theObj = { prom : 'bla' };
if ( theObj.hasOwnProperty )
{
document.write( "Has 'prom': " + theObj.hasOwnProperty( 'prom' ) + 'n' ); // true
document.write( "Has 'prom2': " + theObj.hasOwnProperty( 'prom2' ) + 'n' ); // false
}
isPrototypeOf(object2)
function fc(){
var reg = new RegExp();
return (RegExp.prototype.isPrototypeOf(reg)); // return true.
}
propertyIsEnumerable(proName)
var a = new Array("apple", "banana", "cactus");
document.write(a.propertyIsEnumerable(2)); // true
Všechny příspěvky publikované na webu dum-zharada.okhelp.cz jsou zásadně jen a pouze subjektivním názorem autorů příspěvků na danou skutečnost či problematiku. Tento subjektivní názor či fikce nemusí nezbytně nutně odpovídat objektivní zkutečnosti.
Nikdo Vás nenutí řídit se informacemi získanými z příspěvků, používejte svůj vlastní rozum a logický úsudek.
Provozovatel neodpovídá za obsah komentářů. Komentáře jsou publikovány ihned po jejich zadání do systému, provozovatel je nijak neschvaluje ani neautorizuje a nemůže ovlivnit jejich obsah. Vyhrazujeme si nicméně právo libovolný komentář ex-post smazat.
Nikdo Vás nenutí řídit se informacemi získanými z příspěvků, používejte svůj vlastní rozum a logický úsudek.
Provozovatel neodpovídá za obsah komentářů. Komentáře jsou publikovány ihned po jejich zadání do systému, provozovatel je nijak neschvaluje ani neautorizuje a nemůže ovlivnit jejich obsah. Vyhrazujeme si nicméně právo libovolný komentář ex-post smazat.
htaccess rady a zkušenosti
Testování kódu htaccess ZDEPříklady na jakpsatweb
Dokumentace na apache.org
Testování regexů
Komentar nesmi byt na stejnem radku, jako kod. Zde jsou komentare, na konci radku (vedle) prikazu, jen kvuli snadnejsimu pochopeni kodu.
RewriteCond string (regex1) # tento radek nebude fungovat, koment musi byt na samostatnem radku, nejlepe nad provadenym kodem.
# tak je to spravne, komentar na samostatnem radku a nejlepe nad ukolem
RewriteCond string (regex1)
RewriteRule dosáhne jen na regex předchozího RewriteCond!
RewriteCond string (regex1) # nedosahne
RewriteCond string (regex2)
RewriteRule (regex) %1 # v %1 bude regex2
Číslo za % udává, kolikátá skupina předchozího regexu v RewriteCond bude použita. %0 vezme vše ze všech skupin.
Pokud skupina neexistuje, tak se vypíše jako %N , kde N je číslo skupiny, která nebyla nalezena.
$1 číslo za $ udává kolikátá skupina regexu bude použita, ale platí jen pro RewriteRule z jeho vlastního regexu. $0 vezme všchny skupiny (group) regexu z RewriteRule.
RewriteCond může být několikrát za sebou, ale jakmile se jedna z těchto podmínek nesplní, tak se nesplní ani následující RewriteRule!
RewriteCond # podmínka nesplněna
RewriteCond # splněna
RewriteRule # se nevykoná, protože jedna z podmínek nebyla splněna
RewriteRule přísluší vždy k předchozímu - předchozí skupině RewriteCond. Následující RewriteRule už je samostatné viz příklad:
RewriteCond
RewriteRule # tohle reaguje na předchozí podmínku a vykoná se, když je podmínka splněna
RewriteRule # tohle už je samostatné a nebude brát ohled na podmínku - podmínky v předchozích řádcích.
Využití regexu, který bude vytvořen až v následujícím RewriteRule. Regex Back-Reference Availability
Date: 27.02.2020 - 11:11
global je klíčové slovo, které zajistí viditelnost proměnné například uvnitř funkcí.
$a = 5;
$b = 2;
function Secti()
{
global $a, $b;
$b = $a + $b;
}
Secti();
echo $b;// 7
// pred vsemi include file
$varGlob = 10;
include('some.inc');
$GLOBALS; // pole ktere obsahuje SERVER i vsechny uzivatelovi globalni promenne
function PrintFC()
{
$a = $GLOBALS['varGlob']; // ziskame globalni promennou
$GLOBALS['varGlob'] = 20; // muzeme prepsat jeji hodnotu
print $a; // 10
}
PrintFC();
print $varGlob; // 20
Editace: 23.7.2020 - 12:39
Počet článků v kategorii: 77
Url:php-redirect-301-example-code