Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialJesse Gravenor
27,272 PointsShirts directory files not working with .htaccess and clean URLs
I was not able to get the shirts page, nor the shirt detail page links to work with the download files.
The .htaccess Rewrite lines seemed to be working only to point the browser to the shirts/ directory, but stop short of loading the shirts.php or shirt.php file. In fact I would land on the shirts/ directory page with the files listed. I could follow the link to the shirts.php, but could not link to the shirt detail page through the shirt.php.
I was able to re-dirty the URLs on the shirts detail page and change the shirts.php to an index.php; and this is working to go forward with this course. I also had to remove the offending lines from the .htaccess folder dealing with shirts/, shirts.php and shirt.php.
I spent a good amount of time getting aquanited with .htaccess files, but sot nowhere in the end. If anyone else encountered this or found a solution, please let me know!
Here is the .htaccess file. It is the same as from the download, but with subdirectory/ added where necessary:
RewriteEngine On
RewriteRule ^subdirectory/shirts/$ mikesshirtssql/shirts/shirts.php
RewriteRule ^subdirectory/shirts/([0-9]+)/$ shirts/shirt.php?id=$1
RewriteRule ^receipt.php$ /receipt/ [R=301]
RewriteRule ^contact.php$ /contact/ [R=301]
RewriteRule ^shirts.php$ /shirts/ [R=301]
RewriteRule ^(shirts/[0-9]+)$ /$1/ [R=301]
RewriteCond %{QUERY_STRING} ^id=([0-9]+)$
RewriteRule ^shirt.php$ /shirts/%1/? [R=301]
Again, what happens is that when you link or navigate to localhost/subdirectory/shirts/ you are taken to the geneic directory page displaying links to shirts.php and shirt.php. This file is supposed to direct to the shirt.php file, without having to change the name to index.php. The larger problem is the shirt query strings don't get directed to shirt.php, as is also the intent of this file.
3 Answers
thomascawthorn
22,986 PointsCan you post the .htaccess file you tried with?
Check the Markdown Cheatsheet if you're wanting to format it ;)
shawn stokes
5,651 Pointsyou might want to check if redirects are turned on in your apache server setup i know i had to turn mine on.
Jesse Gravenor
27,272 PointsShawn,
Thanks. It seems to be turned on because before I added the subdirectory it was rewriting shirts/ as if it were in the root.
Jesse Gravenor
27,272 PointsThank you Robert. That did it!
Robert Mews
11,540 PointsRobert Mews
11,540 PointsHey Jesse,
Try removing the backslashes on the shirts files, like this
EDIT: You don't remove the backslash on the receipt and contact files since those aren't contained in a directory (i.e. the shirt files are located in a separate directory).