phillystyle123
asked on
coldfusion htaccess rewrite rule generating error
I'm using isapi rewrite
my rewrites work but i'm trying to get rid of file extensions so instead of:
http://ikonltd.com/artists/ipad-artist/Abakanowicz.cfm
i can do
http://ikonltd.com/artists/ipad-artist/Abakanowicz
i found this in the isapi docs:
#Redirect extension requests to avoid duplicate content
RewriteRule ^([^?]+)\.cfm$ $1 [NC,R=301,L]
#Internally add extensions to request
RewriteCond %{REQUEST_FILENAME}.cfm -f
RewriteRule (.*) $1.cfm
but when i try to access:
http://ikonltd.com/artists/ipad-artist/Abakanowicz
i get this error:
Could not find the included template http://ikonltd.com/includes/header.cfm.
Note: If you wish to use an absolute template path (for example, template="/mypath/index.cf m") with CFINCLUDE, you must create a mapping for the path using the ColdFusion Administrator. Or, you can use per-application settings to specify mappings specific to this application by specifying a mappings struct to THIS.mappings in Application.cfc.
Using relative paths (for example, template="index.cfm" or template="../index.cfm") does not require the creation of any special mappings. It is therefore recommended that you use relative paths with CFINCLUDE whenever possible.
i've tried to include a mapping in my Application.cfm file and add it to my include/header.cfm path but i get the same error
my mapping:
<cfset this.mappings['myMapping'] = "D:\user\www\newsite\" />
this is what i have in my include:
<cfinclude template="/#this.mappings[ 'myMapping ']#/includ es/header. cfm" />
this isn't working either
my rewrites work but i'm trying to get rid of file extensions so instead of:
http://ikonltd.com/artists/ipad-artist/Abakanowicz.cfm
i can do
http://ikonltd.com/artists/ipad-artist/Abakanowicz
i found this in the isapi docs:
#Redirect extension requests to avoid duplicate content
RewriteRule ^([^?]+)\.cfm$ $1 [NC,R=301,L]
#Internally add extensions to request
RewriteCond %{REQUEST_FILENAME}.cfm -f
RewriteRule (.*) $1.cfm
but when i try to access:
http://ikonltd.com/artists/ipad-artist/Abakanowicz
i get this error:
Could not find the included template http://ikonltd.com/includes/header.cfm.
Note: If you wish to use an absolute template path (for example, template="/mypath/index.cf
Using relative paths (for example, template="index.cfm" or template="../index.cfm") does not require the creation of any special mappings. It is therefore recommended that you use relative paths with CFINCLUDE whenever possible.
i've tried to include a mapping in my Application.cfm file and add it to my include/header.cfm path but i get the same error
my mapping:
<cfset this.mappings['myMapping']
this is what i have in my include:
<cfinclude template="/#this.mappings[
this isn't working either
you can't include a template using "<cfinclude template="http://ikonltd.com/includes/header.cfm">" syntax!
it MUST be like "/includes/header.cfm".
I imagine you know that and its isapi that is causing this syntax error - is that correct?
I am not a guru in isapi rewrite but I do use it for a few sites and am moderately familiar.
Have you seen others using it in the fashion you are trying to use it?
Meaning is it a good idea to do what you are wanting to do??? And is it feasible.
I don't know - that might be a question you should ask!
Why are you wanting to do this?
If all you want to do is give the illusion of being at Abakanowicz instead of Abakanowicz.cfm then can you not use a 404 page methodology?
it MUST be like "/includes/header.cfm".
I imagine you know that and its isapi that is causing this syntax error - is that correct?
I am not a guru in isapi rewrite but I do use it for a few sites and am moderately familiar.
Have you seen others using it in the fashion you are trying to use it?
Meaning is it a good idea to do what you are wanting to do??? And is it feasible.
I don't know - that might be a question you should ask!
Why are you wanting to do this?
If all you want to do is give the illusion of being at Abakanowicz instead of Abakanowicz.cfm then can you not use a 404 page methodology?
ASKER
Client requested leaving the file extension off.
this is how i'm calling the include:
<cfinclude template="/includes/header .cfm">
there must be a way to make this work:
#Redirect extension requests to avoid duplicate content
RewriteRule ^([^?]+)\.cfm$ $1 [NC,R=301,L]
#Internally add extensions to request
RewriteCond %{REQUEST_FILENAME}.cfm -f
RewriteRule (.*) $1.cfm
I'm going to test it w/o the includes
this is how i'm calling the include:
<cfinclude template="/includes/header
there must be a way to make this work:
#Redirect extension requests to avoid duplicate content
RewriteRule ^([^?]+)\.cfm$ $1 [NC,R=301,L]
#Internally add extensions to request
RewriteCond %{REQUEST_FILENAME}.cfm -f
RewriteRule (.*) $1.cfm
I'm going to test it w/o the includes
just because client wanted to do this doesn't mean that it's feasible ...
and like I said - why not 404?
and like I said - why not 404?
ASKER
ah -
looking at the error it says:
The error occurred in D:\user\www\newsite\errors \pagenotfo und.cfm: line 4
which means that something's wrong with my RewriteRule
looking at the error it says:
The error occurred in D:\user\www\newsite\errors
which means that something's wrong with my RewriteRule
The .htaccess stuff is a red herring here. The problem is your use of an absolute path in the cfinclude. My understanding is that if one .cfm file cfincludes another .cfm file, that second one won't be processed through the webserver a second time (i.e. it doesn't go anywhere near the .htaccess).
I'm repeating myself here, but, did this work prior to the .htaccess changes to handle the no .cfm extension? Or, take out the .htaccess and it'll still fail for the same reasons, I expect.
This is from the documentation on the cfinclude tag:
In that last example, the CFIDE is a mapping setup in the CF Administrator. It may be you need to do the same for your /includes/ directory.
I'm repeating myself here, but, did this work prior to the .htaccess changes to handle the no .cfm extension? Or, take out the .htaccess and it'll still fail for the same reasons, I expect.
This is from the documentation on the cfinclude tag:
ColdFusion searches for included files in the following locations:
1. In the directory of the current page or a directory relative to the current page
2. In directories mapped in the ColdFusion Administrator
You cannot specify an absolute URL or file system path for the file to include. You can only use paths relative to the directory of the including page or a directory that is registered in the ColdFusion Administrator Mappings. The following cfinclude statements work, assuming that the myinclude.cfm file exists in the specified directory:
<cfinclude template="myinclude.cfm">
<cfinclude template="../myinclude.cfm">
<cfinclude template="/CFIDE/debug/myinclude.cfm ">
In that last example, the CFIDE is a mapping setup in the CF Administrator. It may be you need to do the same for your /includes/ directory.
ASKER
http://ikonltd.com/artists/ipad-artist/Abakanowicz.cfm
using this for all includes:
<cfinclude template="/includes/header .cfm">
http://ikonltd.com/artists/ipad-artist/Abakanowicz - redirects to page not found.
using this for all includes:
<cfinclude template="/includes/header
http://ikonltd.com/artists/ipad-artist/Abakanowicz - redirects to page not found.
If I go here, it's NOTHING to do with a redirect, and everything to do with the cfinclude using an absolute path:
http://ikonltd.com/artists /ipad-arti st/Abakano wicz
The error I see (my highlight for emphasis):
http://ikonltd.com/artists
The error I see (my highlight for emphasis):
Could not find the included template http://ikonltd.com/includes/header.cfm.
Note: If you wish to use an absolute template path (for example, template="/mypath/index.cfm") with CFINCLUDE, you must create a mapping for the path using the ColdFusion Administrator. Or, you can use per-application settings to specify mappings specific to this application by specifying a mappings struct to THIS.mappings in Application.cfc.
Using relative paths (for example, template="index.cfm" or template="../index.cfm") does not require the creation of any special mappings. It is therefore recommended that you use relative paths with CFINCLUDE whenever possible.
The error occurred in D:\gregikon\www\newsite\errors\pagen otfound.cf m: line 4
3 :
4 : <cfinclude template="http://ikonltd.com/includes/header.cfm">
So in summary, go to your CF Administrator, Mappings page. Setup a new mapping for 'includes' that points to "D:\user\www\newsite\inclu des\" (or wherever your includes directory is). The code should then work without any further modifications required.
ASKER
i don't have access to the cf admin. i can do it in application.cfm, no? not sure how though.
also, the code for the include <cfinclude template="/includes/header .cfm"> already works
it seems to me that it's the redirect that's faulty - i'm being redirected to pagenotfound.cfm when i'm trying to pull this url up:
http://ikonltd.com/artists/ipad-artist/Abakanowicz
this:
Could not find the included template http://ikonltd.com/includes/header.cfm.
is referring to this page:
pagenotfound.cfm
not this page:
http://ikonltd.com/artists/ipad-artist/Abakanowicz
also, the code for the include <cfinclude template="/includes/header
it seems to me that it's the redirect that's faulty - i'm being redirected to pagenotfound.cfm when i'm trying to pull this url up:
http://ikonltd.com/artists/ipad-artist/Abakanowicz
this:
Could not find the included template http://ikonltd.com/includes/header.cfm.
is referring to this page:
pagenotfound.cfm
not this page:
http://ikonltd.com/artists/ipad-artist/Abakanowicz
There's two things happening here. Firstly I'm guessing that the Abakanowicz.cfm file doesn't refer to the header.cfm include? So, there's a mistake in your .htaccess, that is then going to your 404 page, pagenotfound.cfm. That file refers to header.cfm, which is where the error due to the absolute url kicks in.
This blog post gives a good explanation of how to use the this.mappings structure.
So I think this is what you would need in your application.cfm / .cfc:
And then refer to it like this in your pagenotfound.cfm:
And all this is just to fix the error in your pagenotfound.cfm. I need to give more thought to the .htaccess problem!
This blog post gives a good explanation of how to use the this.mappings structure.
So I think this is what you would need in your application.cfm / .cfc:
<cfset this.mappings['/includes']= "D:\user\www\newsite\includes">
And then refer to it like this in your pagenotfound.cfm:
<cfinclude template="/includes/header.cfm">
And all this is just to fix the error in your pagenotfound.cfm. I need to give more thought to the .htaccess problem!
ONCE AGAIN - are you sure any of this is feasible - do you know of anyone else who has removed file extensions with a url rewrite?
AND why not use the 404 method most everyone uses? (just ask if you don't know)
AND why not use the 404 method most everyone uses? (just ask if you don't know)
ASKER
djrafx -
check out "Hide file extensions" on this page - this is what i'm trying to accomplish:
http://www.helicontech.com/isapi_rewrite/doc/examples.htm
why would i use the 404 method? isn't that a custom error page?
check out "Hide file extensions" on this page - this is what i'm trying to accomplish:
http://www.helicontech.com/isapi_rewrite/doc/examples.htm
why would i use the 404 method? isn't that a custom error page?
do you remember what I said in the other post about a newbie looking at something they don't understand and saying that's not gonna work
ASKER
djrafx -
appreciate the help, but please, spare me the patronizing. i'll try anything if it makes sense to try it.
truth be told, i don't build much in cf, but i've been doing this for years so i know if something's worth trying or if it's going down a wrong path.
regarding your last comments:
1. "ONCE AGAIN - are you sure any of this is feasible - do you know of anyone else who has removed file extensions with a url rewrite?"
Yes, I'm sure it's feasible -
check out "Hide file extensions" on this page - this is what i'm trying to accomplish:
http://www.helicontech.com/isapi_rewrite/doc/examples.htm
2. "AND why not use the 404 method most everyone uses? (just ask if you don't know)"
again, that's not what i'm trying to accomplish - i don't care about a custom error page right now - just trying to get my extensionless url to work
i haven't tried your last bit of code in the question you're referencing because i'm jumping around between projects.
appreciate the help, but please, spare me the patronizing. i'll try anything if it makes sense to try it.
truth be told, i don't build much in cf, but i've been doing this for years so i know if something's worth trying or if it's going down a wrong path.
regarding your last comments:
1. "ONCE AGAIN - are you sure any of this is feasible - do you know of anyone else who has removed file extensions with a url rewrite?"
Yes, I'm sure it's feasible -
check out "Hide file extensions" on this page - this is what i'm trying to accomplish:
http://www.helicontech.com/isapi_rewrite/doc/examples.htm
2. "AND why not use the 404 method most everyone uses? (just ask if you don't know)"
again, that's not what i'm trying to accomplish - i don't care about a custom error page right now - just trying to get my extensionless url to work
i haven't tried your last bit of code in the question you're referencing because i'm jumping around between projects.
apparently you think by 404 method that I'm talking about a custom error page???
I am not trying to be rude - sometimes yes I patronize - sorry - BUT I don't believe you have the experience to determine if something is worth trying or going down a wrong path.
I'm just trying to help you and now this is the 2nd question where you dont understand my responses, but say anyway that its headed down the wrong path.
I will look at your link and post in the morning - US Eastern time.
I am not trying to be rude - sometimes yes I patronize - sorry - BUT I don't believe you have the experience to determine if something is worth trying or going down a wrong path.
I'm just trying to help you and now this is the 2nd question where you dont understand my responses, but say anyway that its headed down the wrong path.
I will look at your link and post in the morning - US Eastern time.
ASKER
"BUT I don't believe you have the experience to determine if something is worth trying or going down a wrong path."
as far as i can see, it's not cf -it's htaccess
as far as i can see, it's not cf -it's htaccess
the problem you are experiencing NOW of course is htaccess - because thats what you are using!
ASKER
your the man dgrafx - let me know if you come by any possible solutions
now whos being condescending ...
could you post your entire .htaccess file please
could you post your entire .htaccess file please
real quick - try REQUEST_URI instead of REQUEST_FILENAME
ASKER
yeah but i left you an opening by misspelling "your"
RewriteEngine on
RewriteBase /newsite/
#Redirect extension requests to avoid duplicate content
RewriteRule ^([^?]+)\.cfm$ $1 [NC,R=301,L]
#Internally add extensions to request
RewriteCond %{REQUEST_FILENAME}.cfm -f
RewriteRule (.*) $1.cfm
RewriteRule ^/newaq/popup/(.+?)/(.+?)\ .cfm /newaq/popup.cfm?AutoArtID =$1&PageNu m_newaqima ges=$2 [QSA]
RewriteRule ^/newaq/popup-nw/(.+?)/(.+ ?)\.cfm /newaq/popup-nw.cfm?LastNa me=$1&Auto ArtID=$2 [QSA]
RewriteRule ^/newaq/ipad-detail/(.+?)/ (.+?)\.cfm /newaq/ipad-detail.cfm?per malink=$1& AutoArtID= $2 [QSA]
RewriteRule ^/artists/ipad-artist/(.+? )\.cfm /artists/ipad-artist.cfm?p ermalink=$ 1 [QSA]
RewriteRule ^/artists/ipad-exhibitions /(.+?)\.cf m /artists/ipad-exhibitions. cfm?permal ink=$1 [QSA]
RewriteRule ^/artists/ipad-detail/(.+? )/(.+?)\.c fm /artists/ipad-detail.cfm?p ermalink=$ 1&AutoArtI D=$2 [QSA]
RewriteRule ^/past/ipad-exhibitions/(. +?)\.cfm /past/ipad-exhibitions.cfm ?ExID=$1 [QSA]
RewriteRule ^/past/ipad-detail/(.+?)/( .+?)\.cfm /past/ipad-detail.cfm?Auto ArtID=$1&E xID=$2 [QSA]
RewriteRule ^/current/ipad-detail/(.+? )/(.+?)\.c fm /current/ipad-detail.cfm?A utoArtID=$ 1&ExID=$2 [QSA]
RewriteRule ^/newaq/newacq_detail/(.+? )/(.+?)/(. +?)\.cfm /newaq/newacq_detail.cfm?A utoArtID=$ 1&ArtistID =$2&PageNu m_newaqima ges=$3 [QSA]
RewriteEngine on
RewriteBase /newsite/
#Redirect extension requests to avoid duplicate content
RewriteRule ^([^?]+)\.cfm$ $1 [NC,R=301,L]
#Internally add extensions to request
RewriteCond %{REQUEST_FILENAME}.cfm -f
RewriteRule (.*) $1.cfm
RewriteRule ^/newaq/popup/(.+?)/(.+?)\
RewriteRule ^/newaq/popup-nw/(.+?)/(.+
RewriteRule ^/newaq/ipad-detail/(.+?)/
RewriteRule ^/artists/ipad-artist/(.+?
RewriteRule ^/artists/ipad-exhibitions
RewriteRule ^/artists/ipad-detail/(.+?
RewriteRule ^/past/ipad-exhibitions/(.
RewriteRule ^/past/ipad-detail/(.+?)/(
RewriteRule ^/current/ipad-detail/(.+?
RewriteRule ^/newaq/newacq_detail/(.+?
thanks
did you try REQUEST_URI instead of REQUEST_FILENAME?
also - if that doesn't work temporarily remove everything after RewriteRule (.*) $1.cfm
also try removing rewritebase /newsite/
did you try REQUEST_URI instead of REQUEST_FILENAME?
also - if that doesn't work temporarily remove everything after RewriteRule (.*) $1.cfm
also try removing rewritebase /newsite/
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
thanks dgrafx - this works great by itself but not with any of my rewrites. any idea how to implement both?
no idea ???
where did you get that stuff anyway?
don't answer that ...
no - is the answer
where did you get that stuff anyway?
don't answer that ...
no - is the answer
is there anything else on this question?
time to wrap up some of your questions ...
time to wrap up some of your questions ...
ASKER
this works by itself:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.cfm -f
RewriteRule ^(.*)$ $1.cfm
it needs to work with this as well though -currently i get redirected to pagenotfound
RewriteEngine on
RewriteBase /newsite/
RewriteRule ^/newaq/popup/(.+?)/(.+?)\ .cfm /newaq/popup.cfm?AutoArtID =$1&PageNu m_newaqima ges=$2 [QSA]
RewriteRule ^/newaq/popup-nw/(.+?)/(.+ ?)\.cfm /newaq/popup-nw.cfm?LastNa me=$1&Auto ArtID=$2 [QSA]
RewriteRule ^/newaq/ipad-detail/(.+?)/ (.+?)\.cfm /newaq/ipad-detail.cfm?per malink=$1& AutoArtID= $2 [QSA]
RewriteRule ^/artists/ipad-artist/(.+? )\.cfm /artists/ipad-artist.cfm?p ermalink=$ 1 [QSA]
RewriteRule ^/artists/ipad-exhibitions /(.+?)\.cf m /artists/ipad-exhibitions. cfm?permal ink=$1 [QSA]
RewriteRule ^/artists/ipad-detail/(.+? )/(.+?)\.c fm /artists/ipad-detail.cfm?p ermalink=$ 1&AutoArtI D=$2 [QSA]
RewriteRule ^/past/ipad-exhibitions/(. +?)\.cfm /past/ipad-exhibitions.cfm ?ExID=$1 [QSA]
RewriteRule ^/past/ipad-detail/(.+?)/( .+?)\.cfm /past/ipad-detail.cfm?Auto ArtID=$1&E xID=$2 [QSA]
RewriteRule ^/current/ipad-detail/(.+? )/(.+?)\.c fm /current/ipad-detail.cfm?A utoArtID=$ 1&ExID=$2 [QSA]
RewriteRule ^/newaq/newacq_detail/(.+? )/(.+?)/(. +?)\.cfm /newaq/newacq_detail.cfm?A utoArtID=$ 1&ArtistID =$2&PageNu m_newaqima ges=$3 [QSA]
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.cfm -f
RewriteRule ^(.*)$ $1.cfm
it needs to work with this as well though -currently i get redirected to pagenotfound
RewriteEngine on
RewriteBase /newsite/
RewriteRule ^/newaq/popup/(.+?)/(.+?)\
RewriteRule ^/newaq/popup-nw/(.+?)/(.+
RewriteRule ^/newaq/ipad-detail/(.+?)/
RewriteRule ^/artists/ipad-artist/(.+?
RewriteRule ^/artists/ipad-exhibitions
RewriteRule ^/artists/ipad-detail/(.+?
RewriteRule ^/past/ipad-exhibitions/(.
RewriteRule ^/past/ipad-detail/(.+?)/(
RewriteRule ^/current/ipad-detail/(.+?
RewriteRule ^/newaq/newacq_detail/(.+?
and how does all that have to do with your original question?
it's EXACTLY like the other question!
you ask a question and get some answers ...
then you post some more of the question which may actually change the question entirely!
you realize that certain types of answers create some work on our part dont you?
it's not like asking what 2+2 equals
one needs to sometimes setup a test environment and experiment just to give a rudimentary answer.
you are making it next to impossible for me to post in any future question of yours!
and as far as this question goes - what makes you think all the additional lines you added in are compatible?
it's EXACTLY like the other question!
you ask a question and get some answers ...
then you post some more of the question which may actually change the question entirely!
you realize that certain types of answers create some work on our part dont you?
it's not like asking what 2+2 equals
one needs to sometimes setup a test environment and experiment just to give a rudimentary answer.
you are making it next to impossible for me to post in any future question of yours!
and as far as this question goes - what makes you think all the additional lines you added in are compatible?
ASKER
just a note - i inadvertently selected the wrong answer-i've requested that it be fixed
Automated Request for Attention: Q_26705257
Automated Request for Attention: Q_26705257
thank you and good luck ...
I've never used that this.mappings struct before. Why can't you just use a relative filepath in your cfinclude?