Archief - redirect met .htaccess - best (seo) practice?

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Bram

Legacy Member
Elk zijn goeiendag

Ik ben bezig aan een website (zeer basic, statische files etc) en zit met het volgende: om de urls wat proper en SEO friendly te houden werk ik met volgende .htaccess file (geadapteerd van codeigniter).

Code:
RewriteEngine on
RewriteCond $1 !^(index\.php|public)
RewriteRule ^(.*)$ index.php/$1 [L]

In m'n PHP vang ik dit op als volgt:

Code:
$subfolder = '/publicnew/';
$uri = $_SERVER['REQUEST_URI'];
$m_Pagina = substr($uri, strlen($subfolder));
if(!$m_Pagina)
{
	$m_Pagina = 'home';
}

Op die manier gebruik ik $m_Pagina om php files uit een map te includen (in before "je test toch of je mag includen"). Dit laat me ook toe om submappen te gebruiken en m'n urls er uit te laten zien als example.com/tempdir/submap/file

Zoals je ziet: de site staat momenteel nog in een tempdir, maar binnenkort verhuist die naar de root.

Nu zit ik echter met het probleem dat ik met een hele hoop (~450) submappen zit in de root waarvoor de redirect niet mag gelden.

Ik ga dus m'n .htaccess moeten aanpassen, maar vroeg me een beetje af wat ik best zou doen.

Ofwel moet ik al m'n urls definieren in m'n htaccess file (het gaat om een 20tal pagina's) ofwel moet ik toch een soort "identifier" toevoegen aan de urls van de site voor de RewriteCond op in te stellen. Zoja, iemand een suggestie hoe ik dit best aanpak?

Ik hoop dat ik mezelf wat duidelijk maak.

Warezdude124

Legacy Member
kan je geen whitelist maken en elke keer de gevraagde pagina in die array zoeken
snel een copy-paste van wat ik bedoel

$whitelist = array('home', 'page');

//in did voorbeeld beter $_get['page'] te verkijgen met een rewrite-rule
if (in_array($_GET['page'], $whitelist)) {
include($_GET['page'].'.php');
} else {
include('home.php');
}

edit: ow sorry, mijn kennis hiervan is maar peanuts

Bram

Legacy Member
Da's totaal niet wat ik bedoelde (zal waarschijnlijk aan mijn uitleg liggen). De PHP afhandeling is het probleem niet, het probleem is dat ik niet goed weet hoe ik mijn urls (en dus mijn .htaccess) moet opbouwen.

dJeez

Legacy Member
Dus als ik het goed snap zijn er nu wat subfolders met scripts in die je nog rechtstreeks wil uitvoeren?

Dan kan je toch eenvoudigweg nog een extra controle inbouwen die test of er een script bestaat op de ingegeven locatie, en de URL niet herschrijven indien dat het geval is.

Dus :
Code:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|public)
RewriteRule ^(.*)$ index.php/$1 [L]

De eerste toegevoegde conditie test of het niet gaat om een bestaand bestand, de tweede test of het niet gaat om een bestaande folder. Als er een bestand of folder bestaat dan wordt de RewriteRule niet uitgevoerd.

Bram

Legacy Member
Mja, het is meer dan een script dat in die subfolders staat, de klanten bereiken hun eigen pagina via

example.com/klant1/, example.com/klant2/ etc. klant1, klant2... zijn die subfolders met de nodige bestanden voor elke klant.

Maar ik ken maar heel weinig van .htaccess en apache, whatnot, dus ik wist ook niet dat ik die regel kon toevoegen. Ik probeer dat even, alvast bedankt!

dJeez

Legacy Member
Het maakt echt niet uit wat er staat hé (dus of dat css, html, gif, jpg, ... is), vanzodra er een URL wordt opgevraagd waarvoor een bestand op de server staat in de document root zal de URL niet herschreven worden. Voor alle andere zaken wel (ttz dan valt hij door naar de conditie die je reeds had staan, dus enkel index.php en heel public/ niet herschrijven)...

Bram

Legacy Member
In principe hoeft public er dan niet langer bij te staan? Dit was gewoon de map met images, css, js... die niet herschreven mochten worden natuurlijk.

dJeez

Legacy Member
Idd, dan zou je die net zogoed kunnen weglaten.

Je kan ook steeds de logging van mod_rewrite aanzetten om te controleren of alles nog correct herschreven wordt.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan